home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume89 / intuitin / scanner.1 < prev   
Internet Message Format  |  1989-05-12  |  69KB

  1. Path: xanth!indri!ames!amdcad!sun!swap!page
  2. From: page%swap@Sun.COM (Bob Page)
  3. Newsgroups: comp.sources.amiga
  4. Subject: v89i136:  scanner - turn intuition structures into c code
  5. Message-ID: <104426@sun.Eng.Sun.COM>
  6. Date: 12 May 89 03:21:10 GMT
  7. Sender: news@sun.Eng.Sun.COM
  8. Lines: 1850
  9. Approved: page@sun.com
  10.  
  11. Submitted-by: d84sp@efd.lth.se (/Stefan Parmark)
  12. Posting-number: Volume 89, Issue 136
  13. Archive-name: intuition/scanner.1
  14.  
  15. Scanner makes commented C code of all intuition structures in memory.
  16. The structures will receive correct pointers towards each other.
  17. Scanner starts looking at IntuitionBase, and follows all pointers,
  18. storing them in memory. When finished, scanner writes it all to
  19. stdout.  Since a structure may be referenced from more than one spot,
  20. I made sure it would never look at it more than once.
  21.  
  22. [uuencoded executable included.  ..bob]
  23.  
  24. # This is a shell archive.
  25. # Remove anything above and including the cut line.
  26. # Then run the rest of the file through 'sh'.
  27. # Unpacked files will be owned by you and have default permissions.
  28. #----cut here-----cut here-----cut here-----cut here----#
  29. #!/bin/sh
  30. # shar: SHell ARchive
  31. # Run the following text through 'sh' to create:
  32. #    Makefile
  33. #    README
  34. #    TODO
  35. #    scanner.c
  36. #    scanner.h
  37. #    scanner.uu
  38. # This is archive 1 of a 1-part kit.
  39. # This archive created: Thu May 11 20:13:44 1989
  40. echo "extracting Makefile"
  41. sed 's/^X//' << \SHAR_EOF > Makefile
  42. XCFLAGS = -cef -v
  43. X
  44. Xscanner:    scanner.o
  45. X        blink LIB:c.o scanner.o TO scanner LIB LIB:lc.lib \
  46. X        LIB:amiga.lib SC SD ND
  47. X
  48. Xscanner.o:    scanner.c scanner.h
  49. X
  50. Xclean:
  51. X        delete scanner.o scanner
  52. SHAR_EOF
  53. echo "extracting README"
  54. sed 's/^X//' << \SHAR_EOF > README
  55. XScanner is in the public domain. Do whatever you like with it.
  56. XI assume no responsiblity for its use.
  57. X
  58. XThis is a little program I wrote when I wanted to find out
  59. Xhow requesters worked. I started Deluxe Paint II, activated
  60. Xthe interesting requester, and let scanner make a copy of it all.
  61. X
  62. XScanner makes commented C code of all intuition structures in memory.
  63. XThe structures will receive correct pointers towards each other.
  64. XScanner starts looking at IntuitionBase, and follows all pointers,
  65. Xstoring them in memory. When finished, scanner writes it all to stdout.
  66. XSince a structure may be referenced from more than one spot, I made
  67. Xsure it would never look at it more than once.
  68. X
  69. XIt is quite useful if you want to are a beginner, and want to make
  70. Xthings work right away.
  71. X
  72. XI never finished scanner, because it had all I needed at the time.
  73. XIt should be quite easy to complete the job.
  74. X
  75. X/Stefan Parmark
  76. Xd84sp@efd.lth.se
  77. SHAR_EOF
  78. echo "extracting TODO"
  79. sed 's/^X//' << \SHAR_EOF > TODO
  80. XExpand flags to their #define names, i.e. gadget->Flags = 0x0081 becomes
  81. Xgadget->Flags = GADGHBOX | SELECTED. This makes the code easier to read.
  82. X
  83. XComplete all structures. For instance, screens are never scanned or listed.
  84. X
  85. XProvide a way to comfortably select the interesting structures. Scanner
  86. Xcurrently lists ALL structures, even those you aren't interested in.
  87. SHAR_EOF
  88. echo "extracting scanner.c"
  89. sed 's/^X//' << \SHAR_EOF > scanner.c
  90. X/* scanner.c */
  91. X
  92. X#include <exec/types.h>
  93. X#include <exec/memory.h>
  94. X#include <intuition/intuitionbase.h>
  95. X#include <proto/exec.h>
  96. X#include <proto/graphics.h>
  97. X#include <proto/intuition.h>
  98. X#include <string.h>
  99. X#include <stdio.h>
  100. X
  101. X#include "scanner.h"
  102. X
  103. X#define VERSION "1.0"
  104. X
  105. Xstatic struct structList structlist[MAXSTRUCTURE];
  106. X
  107. X
  108. Xvoid main(argc, argv)
  109. Xint argc;
  110. XBYTE *argv[];
  111. X{
  112. X  extern struct GfxBase *GfxBase;
  113. X  extern struct IntuitionBase *IntuitionBase;
  114. X
  115. X  GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", 1);
  116. X  IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library", 1);
  117. X
  118. X  ScanScreens(IntuitionBase->FirstScreen);
  119. X
  120. X  ListBitMaps();
  121. X  ListBoolInfos();
  122. X  ListBorders();
  123. X  ListGadgets();
  124. X  ListImages();
  125. X  ListIntuiMessages();
  126. X  ListIntuiTexts();
  127. X  ListKeyMaps();
  128. X  ListLayers();
  129. X  ListMenus();
  130. X  ListMsgPorts();
  131. X  ListPropInfos();
  132. X  ListRastPorts();
  133. X  ListRequesters();
  134. X  ListScreens();
  135. X  ListStringInfos();
  136. X  ListTextFonts();
  137. X  ListWindows();
  138. X
  139. X  EraseStructList();
  140. X
  141. X  CloseLibrary((struct Library *)IntuitionBase);
  142. X  CloseLibrary((struct Library *)GfxBase);
  143. X}
  144. X
  145. X
  146. Xvoid ScanBitMaps(bitmap)
  147. Xregister struct BitMap *bitmap;
  148. X{
  149. X  WORD bitmapno;
  150. X
  151. X  if (bitmap != NULL)
  152. X    bitmapno = BitMapNumber(bitmap);
  153. X}
  154. X
  155. X
  156. Xvoid ScanBoolInfos(boolinfo)
  157. Xregister struct BoolInfo *boolinfo;
  158. X{
  159. X}
  160. X
  161. X
  162. Xvoid ScanBorders(border)
  163. Xregister struct Border *border;
  164. X{
  165. X  WORD borderno;
  166. X
  167. X  while (border != NULL)
  168. X  {
  169. X    borderno = BorderNumber(border);
  170. X
  171. X    border = border->NextBorder;
  172. X  }
  173. X}
  174. X
  175. X
  176. Xvoid ScanGadgets(gadget)
  177. Xregister struct Gadget *gadget;
  178. X{
  179. X  WORD gadgetno, gadgetrenderno, selectrenderno,
  180. X      gadgettextno, specialinfono, gadgettype;
  181. X
  182. X  while (gadget != NULL)
  183. X  {
  184. X    gadgetno = GadgetNumber(gadget);
  185. X
  186. X    if (gadget->Flags & GADGIMAGE)
  187. X    {
  188. X      gadgetrenderno = ImageNumber(gadget->GadgetRender);
  189. X      selectrenderno = ImageNumber(gadget->SelectRender);
  190. X    }
  191. X    else
  192. X    {
  193. X      gadgetrenderno = BorderNumber(gadget->GadgetRender);
  194. X      selectrenderno = BorderNumber(gadget->SelectRender);
  195. X    }
  196. X    gadgettextno = IntuiTextNumber(gadget->GadgetText);
  197. X    gadgettype = gadget->GadgetType & 0x0F;
  198. X    if (gadgettype == GADGET0002)
  199. X      specialinfono = BoolInfoNumber(gadget->SpecialInfo);
  200. X    else if (gadgettype == PROPGADGET)
  201. X      specialinfono = PropInfoNumber(gadget->SpecialInfo);
  202. X    else if (gadgettype == STRGADGET)
  203. X      specialinfono = StringInfoNumber(gadget->SpecialInfo);
  204. X    else
  205. X      specialinfono = 0;
  206. X
  207. X    if (gadget->Flags & GADGIMAGE)
  208. X    {
  209. X      if (Fresh(gadgetrenderno)) ScanImages((struct Image *)gadget->GadgetRender);
  210. X      if (Fresh(selectrenderno)) ScanImages((struct Image *)gadget->SelectRender);
  211. X    }
  212. X    else
  213. X    {
  214. X      if (Fresh(gadgetrenderno)) ScanBorders((struct Border *)gadget->GadgetRender);
  215. X      if (Fresh(selectrenderno)) ScanBorders((struct Border *)gadget->SelectRender);
  216. X    }
  217. X    if (Fresh(gadgettextno)) ScanIntuiTexts(gadget->GadgetText);
  218. X    if (Fresh(specialinfono))
  219. X    {
  220. X      if (gadgettype == GADGET0002)
  221. X        ScanBoolInfos((struct BoolInfo *)gadget->SpecialInfo);
  222. X      else if (gadgettype == PROPGADGET)
  223. X        ScanPropInfos((struct PropInfo *)gadget->SpecialInfo);
  224. X      else if (gadgettype == STRGADGET)
  225. X        ScanStringInfos((struct StringInfo *)gadget->SpecialInfo);
  226. X    }
  227. X
  228. X    gadget = gadget->NextGadget;
  229. X  }
  230. X}
  231. X
  232. X
  233. Xvoid ScanImages(image)
  234. Xregister struct Image *image;
  235. X{
  236. X  WORD imageno;
  237. X
  238. X  while (image != NULL)
  239. X  {
  240. X    imageno = ImageNumber(image);
  241. X
  242. X    image = image->NextImage;
  243. X  }
  244. X}
  245. X
  246. X
  247. Xvoid ScanIntuiMessages(intuimessage)
  248. Xregister struct IntuiMessage *intuimessage;
  249. X{
  250. X}
  251. X
  252. X
  253. Xvoid ScanIntuiTexts(intuitext)
  254. Xregister struct IntuiText *intuitext;
  255. X{
  256. X  WORD intuitextno, itextfontno;
  257. X
  258. X  while (intuitext != NULL)
  259. X  {
  260. X    intuitextno = IntuiTextNumber(intuitext);
  261. X
  262. X    itextfontno = TextAttrNumber(intuitext->ITextFont);
  263. X
  264. X    if (Fresh(itextfontno)) ScanTextAttrs(intuitext->ITextFont);
  265. X
  266. X    intuitext = intuitext->NextText;
  267. X  }
  268. X}
  269. X
  270. X
  271. Xvoid ScanKeyMaps(keymap)
  272. Xregister struct KeyMap *keymap;
  273. X{
  274. X}
  275. X
  276. X
  277. Xvoid ScanLayers(layer)
  278. Xregister struct Layer *layer;
  279. X{
  280. X}
  281. X
  282. X
  283. Xvoid ScanMenus(menu)
  284. Xregister struct Menu *menu;
  285. X{
  286. X}
  287. X
  288. X
  289. Xvoid ScanMsgPorts(msgport)
  290. Xregister struct MsgPort *msgport;
  291. X{
  292. X}
  293. X
  294. X
  295. Xvoid ScanPropInfos(propinfo)
  296. Xregister struct PropInfo *propinfo;
  297. X{
  298. X}
  299. X
  300. X
  301. Xvoid ScanRastPorts(rastport)
  302. Xregister struct RastPort *rastport;
  303. X{
  304. X}
  305. X
  306. X
  307. Xvoid ScanRequesters(requester)
  308. Xregister struct Requester *requester;
  309. X{
  310. X  WORD requesterno, olderrequestno, reqgadgetno, reqborderno, reqtextno,
  311. X      reqlayerno, imagebmapno, rwindowno;
  312. X
  313. X  if (requester != NULL)
  314. X  {
  315. X    requesterno = RequesterNumber(requester);
  316. X
  317. X    olderrequestno = RequesterNumber(requester->OlderRequest);
  318. X    reqgadgetno = GadgetNumber(requester->ReqGadget);
  319. X    reqborderno = BorderNumber(requester->ReqBorder);
  320. X    reqtextno = IntuiTextNumber(requester->ReqText);
  321. X    reqlayerno = LayerNumber(requester->ReqLayer);
  322. X    imagebmapno = BitMapNumber(requester->ImageBMap);
  323. X    rwindowno = WindowNumber(requester->RWindow);
  324. X
  325. X    if (Fresh(olderrequestno)) ScanRequesters(requester->OlderRequest);
  326. X    if (Fresh(reqgadgetno)) ScanGadgets(requester->ReqGadget);
  327. X    if (Fresh(reqborderno)) ScanBorders(requester->ReqBorder);
  328. X    if (Fresh(reqtextno)) ScanIntuiTexts(requester->ReqText);
  329. X    if (Fresh(reqlayerno)) ScanLayers(requester->ReqLayer);
  330. X    if (Fresh(imagebmapno)) ScanBitMaps(requester->ImageBMap);
  331. X    if (Fresh(rwindowno)) ScanWindows(requester->RWindow);
  332. X  }
  333. X}
  334. X
  335. X
  336. Xvoid ScanScreens(screen)
  337. Xregister struct Screen *screen;
  338. X{
  339. X  WORD screenno, windowno;
  340. X
  341. X  while (screen != NULL)
  342. X  {
  343. X    screenno = ScreenNumber(screen);
  344. X
  345. X    windowno = WindowNumber(screen->FirstWindow);
  346. X
  347. X    if (Fresh(windowno)) ScanWindows(screen->FirstWindow);
  348. X
  349. X    screen = screen->NextScreen;
  350. X  }
  351. X}
  352. X
  353. X
  354. Xvoid ScanStringInfos(stringinfo)
  355. Xregister struct StringInfo *stringinfo;
  356. X{
  357. X  WORD stringinfono, layerptrno, altkeymapno;
  358. X
  359. X  if (stringinfo != NULL)
  360. X  {
  361. X    stringinfono = StringInfoNumber(stringinfo);
  362. X
  363. X    layerptrno = LayerNumber(stringinfo->LayerPtr);
  364. X    altkeymapno = KeyMapNumber(stringinfo->AltKeyMap);
  365. X
  366. X    if (Fresh(layerptrno)) ScanLayers(stringinfo->LayerPtr);
  367. X    if (Fresh(altkeymapno)) ScanKeyMaps(stringinfo->AltKeyMap);
  368. X  }
  369. X}
  370. X
  371. X
  372. Xvoid ScanTextAttrs(textattr)
  373. Xregister struct TextAttr *textattr;
  374. X{
  375. X}
  376. X
  377. X
  378. Xvoid ScanTextFonts(textfont)
  379. Xregister struct TextFont *textfont;
  380. X{
  381. X}
  382. X
  383. X
  384. Xvoid ScanWindows(window)
  385. Xregister struct Window *window;
  386. X{
  387. X  WORD windowno, menustripno, firstrequestno, dmrequestno, rportno,
  388. X      borderrportno, firstgadgetno, parentwindowno, descendantwindowno,
  389. X      userportno, windowportno, messagekeyno, checkmarkno, wlayerno,
  390. X      ifontno, wscreenno;
  391. X
  392. X  while (window != NULL)
  393. X  {
  394. X    windowno = WindowNumber(window);
  395. X
  396. X    menustripno = MenuNumber(window->MenuStrip);
  397. X    firstrequestno = RequesterNumber(window->FirstRequest);
  398. X    dmrequestno = RequesterNumber(window->DMRequest);
  399. X    wscreenno = ScreenNumber(window->WScreen);
  400. X    rportno = RastPortNumber(window->RPort);
  401. X    borderrportno = RastPortNumber(window->BorderRPort);
  402. X    firstgadgetno = GadgetNumber(window->FirstGadget);
  403. X    parentwindowno = WindowNumber(window->Parent);
  404. X    descendantwindowno = WindowNumber(window->Descendant);
  405. X    userportno = MsgPortNumber(window->UserPort);
  406. X    windowportno = MsgPortNumber(window->WindowPort);
  407. X    messagekeyno = IntuiMessageNumber(window->MessageKey);
  408. X    checkmarkno = ImageNumber(window->CheckMark);
  409. X    wlayerno = LayerNumber(window->WLayer);
  410. X    ifontno = TextFontNumber(window->IFont);
  411. X
  412. X    if (Fresh(menustripno)) ScanMenus(window->MenuStrip);
  413. X    if (Fresh(firstrequestno)) ScanRequesters(window->FirstRequest);
  414. X    if (Fresh(dmrequestno)) ScanRequesters(window->DMRequest);
  415. X    if (Fresh(wscreenno)) ScanScreens(window->WScreen);
  416. X    if (Fresh(rportno)) ScanRastPorts(window->RPort);
  417. X    if (Fresh(borderrportno)) ScanRastPorts(window->BorderRPort);
  418. X    if (Fresh(firstgadgetno)) ScanGadgets(window->FirstGadget);
  419. X    if (Fresh(parentwindowno)) ScanWindows(window->Parent);
  420. X    if (Fresh(descendantwindowno)) ScanWindows(window->Descendant);
  421. X    if (Fresh(userportno)) ScanMsgPorts(window->UserPort);
  422. X    if (Fresh(windowportno)) ScanMsgPorts(window->WindowPort);
  423. X    if (Fresh(messagekeyno)) ScanIntuiMessages(window->MessageKey);
  424. X    if (Fresh(checkmarkno)) ScanImages(window->CheckMark);
  425. X    if (Fresh(wlayerno)) ScanLayers(window->WLayer);
  426. X    if (Fresh(ifontno)) ScanTextFonts(window->IFont);
  427. X
  428. X    window = window->NextWindow;
  429. X  }
  430. X}
  431. X
  432. X
  433. XBYTE Fresh(number)
  434. Xregister WORD number;
  435. X{
  436. X  register BYTE fresh;
  437. X
  438. X  fresh = (number != 0 && ((number & FOUND) == 0));
  439. X
  440. X  return(fresh);
  441. X}
  442. X
  443. X
  444. XWORD structNumber(structure, structurekind)
  445. Xregister APTR structure;
  446. Xregister WORD structurekind;
  447. X{
  448. X  register WORD number;
  449. X  register BYTE found;
  450. X  register struct structList *structitem;
  451. X  struct structList *newstruct;
  452. X  extern struct structList structlist[MAXSTRUCTURE];
  453. X
  454. X  if (structure == NULL)
  455. X    number = 0;
  456. X  else
  457. X  {
  458. X    structitem = structlist[structurekind].next;
  459. X    found = FALSE;
  460. X    while (structitem != NULL && !found)
  461. X    {
  462. X      if (structitem->structure == structure)
  463. X        found = TRUE;
  464. X      else
  465. X        structitem = structitem->next;
  466. X    }
  467. X
  468. X    if (found)
  469. X      number = structitem->number | FOUND;
  470. X    else
  471. X    {
  472. X      number = ++(structlist[structurekind].number);
  473. X
  474. X      newstruct = (struct structList *)AllocMem(
  475. X          sizeof(struct structList), MEMF_PUBLIC);
  476. X      newstruct->next = structlist[structurekind].next;
  477. X      newstruct->structure = (APTR)structure;
  478. X      newstruct->number = number;
  479. X      structlist[structurekind].next = newstruct;
  480. X    }
  481. X  }
  482. X
  483. X  return(number);
  484. X}
  485. X
  486. X
  487. Xvoid EraseStructList()
  488. X{
  489. X  register WORD structurekind;
  490. X  register struct structList *structitem, *nextstructitem;
  491. X  extern struct structList structlist[MAXSTRUCTURE];
  492. X
  493. X  for (structurekind = 0; structurekind < MAXSTRUCTURE; structurekind++)
  494. X  {
  495. X    structitem = structlist[structurekind].next;
  496. X    while (structitem != NULL)
  497. X    {
  498. X      nextstructitem = structitem->next;
  499. X      FreeMem((BYTE *)structitem, sizeof(struct structList));
  500. X      structitem = nextstructitem;
  501. X    }
  502. X  }
  503. X}
  504. X
  505. X
  506. XUBYTE *APTRName(name)
  507. Xregister UBYTE *name;
  508. X{
  509. X  static UBYTE string[40];
  510. X
  511. X  if (strcmp(name, "NULL") == 0)
  512. X    strcpy(string, name);
  513. X  else
  514. X  {
  515. X    strcpy(string, "(APTR)");
  516. X    strcat(string, name);
  517. X  }
  518. X
  519. X  return(string);
  520. X}
  521. X
  522. X
  523. XUBYTE *structName(number, structurekind)
  524. Xregister WORD number, structurekind;
  525. X{
  526. X  static UBYTE string[40];
  527. X  static UBYTE *structname[MAXSTRUCTURE] =
  528. X  {
  529. X    "bitmap",
  530. X    "boolinfo",
  531. X    "border",
  532. X    "gadget",
  533. X    "image",
  534. X    "intuimessage",
  535. X    "intuitext",
  536. X    "keymap",
  537. X    "layer",
  538. X    "menu",
  539. X    "msgport",
  540. X    "propinfo",
  541. X    "rastport",
  542. X    "requester",
  543. X    "screen",
  544. X    "stringinfo",
  545. X    "textattr",
  546. X    "textfont",
  547. X    "window"
  548. X  };
  549. X
  550. X  if (number == 0)
  551. X    strcpy(string, "NULL");
  552. X  else
  553. X    sprintf(string, "&%s%d", structname[structurekind], NUMBER(number));
  554. X
  555. X  return(string);
  556. X}
  557. X
  558. X
  559. XUBYTE *TitleName(title)
  560. Xregister UBYTE *title;
  561. X{
  562. X  static UBYTE string[100];
  563. X
  564. X  if (string == NULL)
  565. X    strcpy(string, "NULL");
  566. X  else
  567. X    sprintf(string, "\"%s\"", title);
  568. X
  569. X  return(string);
  570. X}
  571. X
  572. X
  573. XUBYTE *MemoryName(memorypos)
  574. Xregister APTR memorypos;
  575. X{
  576. X  static UBYTE string[20];
  577. X
  578. X  if (memorypos == NULL)
  579. X    strcpy(string, "NULL");
  580. X  else
  581. X    sprintf(string, "0x%X", memorypos);
  582. X
  583. X  return(string);
  584. X}
  585. X
  586. X
  587. Xvoid ListBitMaps()
  588. X{
  589. X  register struct BitMap *bitmap;
  590. X  register struct structList *structitem;
  591. X  register WORD plane;
  592. X  WORD bitmapno;
  593. X  extern struct structList structlist[MAXSTRUCTURE];
  594. X
  595. X  structitem = structlist[BITMAP_KIND].next;
  596. X
  597. X  while (structitem != NULL)
  598. X  {
  599. X    bitmap = (struct BitMap *)structitem->structure;
  600. X    bitmapno = structitem->number;
  601. X
  602. X    printf("struct BitMap bitmap%d =\n", bitmapno);
  603. X    printf("{\n");
  604. X    printf("  %d,\011/* BytesPerRow */\n", bitmap->BytesPerRow);
  605. X    printf("  %d,\011/* Rows */\n", bitmap->Rows);
  606. X    printf("  0x%X,\011/* Flags */\n", bitmap->Flags);
  607. X    printf("  %d,\011/* Depth */\n", bitmap->Depth);
  608. X    printf("  %d,\011/* Pad */\n", bitmap->pad);
  609. X    printf("  {\011/* Planes */\n");
  610. X    for (plane = 0; plane < 7; plane++)
  611. X      printf("    %s,\n", MemoryName((APTR)(bitmap->Planes[plane])));
  612. X    printf("    %s\n", MemoryName((APTR)(bitmap->Planes[7])));
  613. X    printf("  }\n");
  614. X    printf("};\n\n");
  615. X
  616. X    structitem = structitem->next;
  617. X  }
  618. X}
  619. X
  620. X
  621. Xvoid ListBoolInfos()
  622. X{
  623. X  register struct BoolInfo *boolinfo;
  624. X  register struct structList *structitem;
  625. X  WORD boolinfono;
  626. X  extern struct structList structlist[MAXSTRUCTURE];
  627. X
  628. X  structitem = structlist[BOOLINFO_KIND].next;
  629. X
  630. X  while (structitem != NULL)
  631. X  {
  632. X    boolinfo = (struct BoolInfo *)structitem->structure;
  633. X    boolinfono = structitem->number;
  634. X
  635. X    printf("struct BoolInfo boolinfo%d =\n", boolinfono);
  636. X    printf("{\n");
  637. X    printf("};\n\n");
  638. X
  639. X    structitem = structitem->next;
  640. X  }
  641. X}
  642. X
  643. X
  644. Xvoid ListBorders()
  645. X{
  646. X  register struct Border *border;
  647. X  register struct structList *structitem;
  648. X  WORD borderno, xyno, nextborderno;
  649. X  extern struct structList structlist[MAXSTRUCTURE];
  650. X
  651. X  structitem = structlist[BORDER_KIND].next;
  652. X
  653. X  while (structitem != NULL)
  654. X  {
  655. X    border = (struct Border *)structitem->structure;
  656. X    borderno = structitem->number;
  657. X
  658. X    xyno = NUMBER(borderno);
  659. X    nextborderno = BorderNumber(border->NextBorder);
  660. X
  661. X    if (border->XY != NULL)
  662. X    {
  663. X      printf("WORD xypair%d[%d] =\n", xyno, 2 * border->Count);
  664. X      PrintWords("%d", "  ", "{", border->XY, "};", (WORD)(2 * border->Count), 8);
  665. X    }
  666. X
  667. X    printf("struct Border border%d =\n", borderno);
  668. X    printf("{\n");
  669. X    printf("  %d, %d,\011/* LeftEdge, TopEdge */\n", border->LeftEdge,
  670. X        border->TopEdge);
  671. X    printf("  %d, %d,\011/* FrontPen, BackPen */\n", border->FrontPen,
  672. X        border->BackPen);
  673. X    printf("  0x%X,\011/* DrawMode */\n", border->DrawMode);
  674. X    printf("  %d,\011/* Count */\n", border->Count);
  675. X    if (border->XY == NULL)
  676. X      printf("  NULL");
  677. X    else
  678. X      printf("  &xypair%d[0]", xyno);
  679. X    printf(",\011/* XY */\n");
  680. X    printf("  %s\011/* NextBorder */\n", BorderName(nextborderno));
  681. X    printf("};\n\n");
  682. X
  683. X    structitem = structitem->next;
  684. X  }
  685. X}
  686. X
  687. X
  688. Xvoid ListGadgets()
  689. X{
  690. X  register struct Gadget *gadget;
  691. X  register struct structList *structitem;
  692. X  WORD gadgetno, nextgadgetno, gadgetrenderno, selectrenderno,
  693. X      gadgettextno, specialinfono, gadgettype;
  694. X  UBYTE *name;
  695. X  extern struct structList structlist[MAXSTRUCTURE];
  696. X
  697. X  structitem = structlist[GADGET_KIND].next;
  698. X
  699. X  while (structitem != NULL)
  700. X  {
  701. X    gadget = (struct Gadget *)structitem->structure;
  702. X    gadgetno = structitem->number;
  703. X
  704. X    nextgadgetno = GadgetNumber(gadget->NextGadget);
  705. X    if (gadget->Flags & GADGIMAGE)
  706. X    {
  707. X      gadgetrenderno = ImageNumber(gadget->GadgetRender);
  708. X      selectrenderno = ImageNumber(gadget->SelectRender);
  709. X    }
  710. X    else
  711. X    {
  712. X      gadgetrenderno = BorderNumber(gadget->GadgetRender);
  713. X      selectrenderno = BorderNumber(gadget->SelectRender);
  714. X    }
  715. X    gadgettextno = IntuiTextNumber(gadget->GadgetText);
  716. X    gadgettype = gadget->GadgetType & 0x0F;
  717. X    if (gadgettype == GADGET0002)
  718. X      specialinfono = BoolInfoNumber(gadget->SpecialInfo);
  719. X    else if (gadgettype == PROPGADGET)
  720. X      specialinfono = PropInfoNumber(gadget->SpecialInfo);
  721. X    else if (gadgettype == STRGADGET)
  722. X      specialinfono = StringInfoNumber(gadget->SpecialInfo);
  723. X    else
  724. X      specialinfono = 0;
  725. X
  726. X    printf("struct Gadget gadget%d =\n", gadgetno);
  727. X    printf("{\n");
  728. X    printf("  %s,\011/* NextGadget */\n", GadgetName(nextgadgetno));
  729. X    printf("  %d, %d,\011/* LeftEdge, TopEdge */\n", gadget->LeftEdge,
  730. X        gadget->TopEdge);
  731. X    printf("  %d, %d,\011/* Width, Height */\n",gadget->Width, gadget->Height);
  732. X    printf("  0x%X,\011/* Flags */\n", gadget->Flags);
  733. X    printf("  0x%X,\011/* Activation */\n", gadget->Activation);
  734. X    printf("  0x%X,\011/* GadgetType */\n", gadget->GadgetType);
  735. X    if (gadget->Flags & GADGIMAGE)
  736. X      name = ImageName(gadgetrenderno);
  737. X    else
  738. X      name = BorderName(gadgetrenderno);
  739. X    printf("  %s,\011/* GadgetRender */\n", APTRName(name));
  740. X    if (gadget->Flags & GADGIMAGE)
  741. X      name = ImageName(selectrenderno);
  742. X    else
  743. X      name = BorderName(selectrenderno);
  744. X    printf("  %s,\011/* SelectRender */\n", APTRName(name));
  745. X    printf("  %s,\011/* GadgetText */\n", IntuiTextName(gadgettextno));
  746. X    printf("  0x%X,\011/* MutualExclude */\n", gadget->MutualExclude);
  747. X    if (gadgettype == GADGET0002)
  748. X      name = BoolInfoName(specialinfono);
  749. X    else if (gadgettype == PROPGADGET)
  750. X      name = PropInfoName(specialinfono);
  751. X    else if (gadgettype == STRGADGET)
  752. X      name = StringInfoName(specialinfono);
  753. X    else
  754. X      name = MemoryName(gadget->SpecialInfo);
  755. X    printf("  %s,\011/* SpecialInfo */\n", APTRName(name));
  756. X    printf("  %d,\011/* GadgetID */\n", gadget->GadgetID);
  757. X    printf("  %s\011/* UserData */\n", MemoryName(gadget->UserData));
  758. X    printf("};\n\n");
  759. X
  760. X    structitem = structitem->next;
  761. X  }
  762. X}
  763. X
  764. X
  765. Xvoid ListImages()
  766. X{
  767. X  register struct Image *image;
  768. X  register struct structList *structitem;
  769. X  register WORD count;
  770. X  WORD imageno, imagedatano, nextimageno;
  771. X  extern struct structList structlist[MAXSTRUCTURE];
  772. X
  773. X  structitem = structlist[IMAGE_KIND].next;
  774. X
  775. X  while (structitem != NULL)
  776. X  {
  777. X    image = (struct Image *)structitem->structure;
  778. X    imageno = structitem->number;
  779. X
  780. X    imagedatano = NUMBER(imageno);
  781. X    nextimageno = ImageNumber(image->NextImage);
  782. X
  783. X    if (image->ImageData != NULL)
  784. X    {
  785. X      count = image->Depth * image->Height * ((image->Width + 15) / 16);
  786. X      printf("UWORD imagedata%d[%d] =\n", imagedatano, count);
  787. X      PrintWords("0x%X", "  ", "{", image->ImageData, "};", count, 8);
  788. X    }
  789. X
  790. X    printf("struct Image image%d =\n", imageno);
  791. X    printf("{\n");
  792. X    printf("  %d, %d,\011/* LeftEdge, TopEdge */\n", image->LeftEdge,
  793. X        image->TopEdge);
  794. X    printf("  %d, %d,\011/* Width, Height */\n", image->Width, image->Height);
  795. X    printf("  %d,\011/* Depth */\n", image->Depth);
  796. X    if (image->ImageData == NULL)
  797. X      printf("  NULL");
  798. X    else
  799. X      printf("  &imagedata%d[0]", imagedatano);
  800. X    printf("\011/* ImageData */\n");
  801. X    printf("};\n\n");
  802. X
  803. X    structitem = structitem->next;
  804. X  }
  805. X}
  806. X
  807. X
  808. Xvoid ListIntuiMessages()
  809. X{
  810. X  register struct IntuiMessage *intuimessage;
  811. X  register struct structList *structitem;
  812. X  WORD intuimessageno;
  813. X  extern struct structList structlist[MAXSTRUCTURE];
  814. X
  815. X  structitem = structlist[INTUIMESSAGE_KIND].next;
  816. X
  817. X  while (structitem != NULL)
  818. X  {
  819. X    intuimessage = (struct IntuiMessage *)structitem->structure;
  820. X    intuimessageno = structitem->number;
  821. X
  822. X    printf("struct IntuiMessage intuimessage%d =\n", intuimessageno);
  823. X    printf("{\n");
  824. X    printf("};\n\n");
  825. X
  826. X    structitem = structitem->next;
  827. X  }
  828. X}
  829. X
  830. X
  831. Xvoid ListIntuiTexts()
  832. X{
  833. X  register struct IntuiText *intuitext;
  834. X  register struct structList *structitem;
  835. X  WORD intuitextno, itextfontno, nexttextno;
  836. X  extern struct structList structlist[MAXSTRUCTURE];
  837. X
  838. X  structitem = structlist[INTUITEXT_KIND].next;
  839. X
  840. X  while (structitem != NULL)
  841. X  {
  842. X    intuitext = (struct IntuiText *)structitem->structure;
  843. X    intuitextno = structitem->number;
  844. X
  845. X    itextfontno = TextAttrNumber(intuitext->ITextFont);
  846. X    nexttextno = IntuiTextNumber(intuitext->NextText);
  847. X
  848. X    printf("struct IntuiText intuitext%d =\n", intuitextno);
  849. X    printf("{\n");
  850. X    printf("  %d, %d,\011/* FrontPen, BackPen */\n", intuitext->FrontPen,
  851. X        intuitext->BackPen);
  852. X    printf("  0x%X,\011/* DrawMode */\n", intuitext->DrawMode);
  853. X    printf("  %d, %d,\011/* LeftEdge, TopEdge */\n", intuitext->LeftEdge,
  854. X        intuitext->TopEdge);
  855. X    printf("  %s,\011/* ITextFont */\n", TextAttrName(itextfontno));
  856. X    printf("  %s,\011/* IText */\n", TitleName(intuitext->IText));
  857. X    printf("  %s\011/* NextText */\n", IntuiTextName(nexttextno));
  858. X    printf("};\n\n");
  859. X
  860. X    structitem = structitem->next;
  861. X  }
  862. X}
  863. X
  864. X
  865. Xvoid ListKeyMaps()
  866. X{
  867. X  register struct KeyMap *keymap;
  868. X  register struct structList *structitem;
  869. X  WORD keymapno;
  870. X  extern struct structList structlist[MAXSTRUCTURE];
  871. X
  872. X  structitem = structlist[KEYMAP_KIND].next;
  873. X
  874. X  while (structitem != NULL)
  875. X  {
  876. X    keymap = (struct KeyMap *)structitem->structure;
  877. X    keymapno = structitem->number;
  878. X
  879. X    printf("struct KeyMap keymap%d =\n", keymapno);
  880. X    printf("{\n");
  881. X    printf("};\n\n");
  882. X
  883. X    structitem = structitem->next;
  884. X  }
  885. X}
  886. X
  887. X
  888. Xvoid ListLayers()
  889. X{
  890. X  register struct Layer *layer;
  891. X  register struct structList *structitem;
  892. X  WORD layerno;
  893. X  extern struct structList structlist[MAXSTRUCTURE];
  894. X
  895. X  structitem = structlist[LAYER_KIND].next;
  896. X
  897. X  while (structitem != NULL)
  898. X  {
  899. X    layer = (struct Layer *)structitem->structure;
  900. X    layerno = structitem->number;
  901. X
  902. X    printf("struct Layer layer%d =\n", layerno);
  903. X    printf("{\n");
  904. X    printf("};\n\n");
  905. X
  906. X    structitem = structitem->next;
  907. X  }
  908. X}
  909. X
  910. X
  911. Xvoid ListMenus()
  912. X{
  913. X  register struct Menu *menu;
  914. X  register struct structList *structitem;
  915. X  WORD menuno;
  916. X  extern struct structList structlist[MAXSTRUCTURE];
  917. X
  918. X  structitem = structlist[MENU_KIND].next;
  919. X
  920. X  while (structitem != NULL)
  921. X  {
  922. X    menu = (struct Menu *)structitem->structure;
  923. X    menuno = structitem->number;
  924. X
  925. X    printf("struct Menu menu%d =\n", menuno);
  926. X    printf("{\n");
  927. X    printf("};\n\n");
  928. X
  929. X    structitem = structitem->next;
  930. X  }
  931. X}
  932. X
  933. X
  934. Xvoid ListMsgPorts()
  935. X{
  936. X  register struct MsgPort *msgport;
  937. X  register struct structList *structitem;
  938. X  WORD msgportno;
  939. X  extern struct structList structlist[MAXSTRUCTURE];
  940. X
  941. X  structitem = structlist[MSGPORT_KIND].next;
  942. X
  943. X  while (structitem != NULL)
  944. X  {
  945. X    msgport = (struct MsgPort *)structitem->structure;
  946. X    msgportno = structitem->number;
  947. X
  948. X    printf("struct MsgPort msgport%d =\n", msgportno);
  949. X    printf("{\n");
  950. X    printf("};\n\n");
  951. X
  952. X    structitem = structitem->next;
  953. X  }
  954. X}
  955. X
  956. X
  957. Xvoid ListPropInfos()
  958. X{
  959. X  register struct PropInfo *propinfo;
  960. X  register struct structList *structitem;
  961. X  WORD propinfono;
  962. X  extern struct structList structlist[MAXSTRUCTURE];
  963. X
  964. X  structitem = structlist[PROPINFO_KIND].next;
  965. X
  966. X  while (structitem != NULL)
  967. X  {
  968. X    propinfo = (struct PropInfo *)structitem->structure;
  969. X    propinfono = structitem->number;
  970. X
  971. X    printf("struct PropInfo propinfo%d =\n", propinfono);
  972. X    printf("{\n");
  973. X    printf("};\n\n");
  974. X
  975. X    structitem = structitem->next;
  976. X  }
  977. X}
  978. X
  979. X
  980. Xvoid ListRastPorts()
  981. X{
  982. X  register struct RastPort *rastport;
  983. X  register struct structList *structitem;
  984. X  WORD rastportno;
  985. X  extern struct structList structlist[MAXSTRUCTURE];
  986. X
  987. X  structitem = structlist[RASTPORT_KIND].next;
  988. X
  989. X  while (structitem != NULL)
  990. X  {
  991. X    rastport = (struct RastPort *)structitem->structure;
  992. X    rastportno = structitem->number;
  993. X
  994. X    printf("struct RastPort rastport%d =\n", rastportno);
  995. X    printf("{\n");
  996. X    printf("};\n\n");
  997. X
  998. X    structitem = structitem->next;
  999. X  }
  1000. X}
  1001. X
  1002. X
  1003. Xvoid ListRequesters()
  1004. X{
  1005. X  register struct Requester *requester;
  1006. X  register struct structList *structitem;
  1007. X  WORD requesterno, olderrequestno, reqgadgetno, reqborderno, reqtextno,
  1008. X      reqlayerno, imagebmapno, rwindowno;
  1009. X  extern struct structList structlist[MAXSTRUCTURE];
  1010. X
  1011. X  structitem = structlist[REQUESTER_KIND].next;
  1012. X
  1013. X  while (structitem != NULL)
  1014. X  {
  1015. X    requester = (struct Requester *)structitem->structure;
  1016. X    requesterno = structitem->number;
  1017. X
  1018. X    olderrequestno = RequesterNumber(requester->OlderRequest);
  1019. X    reqgadgetno = GadgetNumber(requester->ReqGadget);
  1020. X    reqborderno = BorderNumber(requester->ReqBorder);
  1021. X    reqtextno = IntuiTextNumber(requester->ReqText);
  1022. X    reqlayerno = LayerNumber(requester->ReqLayer);
  1023. X    imagebmapno = BitMapNumber(requester->ImageBMap);
  1024. X    rwindowno = WindowNumber(requester->RWindow);
  1025. X
  1026. X    printf("struct Requester requester%d =\n", requesterno);
  1027. X    printf("{\n");
  1028. X    printf("  %s,\011/* OlderRequest */\n", RequesterName(requesterno));
  1029. X    printf("  %d, %d,\011/* LeftEdge, TopEdge */\n", requester->LeftEdge,
  1030. X        requester->TopEdge);
  1031. X    printf("  %d, %d,\011/* Width, Height */\n", requester->Width,
  1032. X        requester->Height);
  1033. X    printf("  %d, %d,\011/* RelLeft, RelTop */\n", requester->RelLeft,
  1034. X        requester->RelTop);
  1035. X    printf("  %s,\011/* ReqGadget */\n", GadgetName(reqgadgetno));
  1036. X    printf("  %s,\011/* ReqBorder */\n", BorderName(reqborderno));
  1037. X    printf("  %s,\011/* ReqText */\n", IntuiTextName(reqtextno));
  1038. X    printf("  0x%X,\011/* Flags */\n", requester->Flags);
  1039. X    printf("  %d,\011/* BackFill */\n", requester->BackFill);
  1040. X    printf("  %s,\011/* ReqLayer */\n", LayerName(reqlayerno));
  1041. X    PrintBytes("    ", "  {\011/* ReqPad1 */", requester->ReqPad1, "  },",
  1042. X        32, 8);
  1043. X    printf("  %s,\011/* ImageBMap */\n", BitMapName(imagebmapno));
  1044. X    printf("  %s,\011/* RWindow */\n", WindowName(rwindowno));
  1045. X    PrintBytes("    ", "  {\011/* ReqPad2 */", requester->ReqPad2, "  }",
  1046. X       36, 9);
  1047. X    printf("};\n\n");
  1048. X
  1049. X    structitem = structitem->next;
  1050. X  }
  1051. X}
  1052. X
  1053. X
  1054. Xvoid ListScreens()
  1055. X{
  1056. X  register struct Screen *screen;
  1057. X  register struct structList *structitem;
  1058. X  WORD screenno;
  1059. X  extern struct structList structlist[MAXSTRUCTURE];
  1060. X
  1061. X  structitem = structlist[SCREEN_KIND].next;
  1062. X
  1063. X  while (structitem != NULL)
  1064. X  {
  1065. X    screen = (struct Screen *)structitem->structure;
  1066. X    screenno = structitem->number;
  1067. X
  1068. X    printf("struct Screen screen%d =\n", screenno);
  1069. X    printf("{\n");
  1070. X    printf("};\n\n");
  1071. X
  1072. X    structitem = structitem->next;
  1073. X  }
  1074. X}
  1075. X
  1076. X
  1077. Xvoid ListStringInfos()
  1078. X{
  1079. X  register struct StringInfo *stringinfo;
  1080. X  register struct structList *structitem;
  1081. X  WORD stringinfono, layerptrno, altkeymapno;
  1082. X  extern struct structList structlist[MAXSTRUCTURE];
  1083. X
  1084. X  structitem = structlist[STRINGINFO_KIND].next;
  1085. X
  1086. X  while (structitem != NULL)
  1087. X  {
  1088. X    stringinfo = (struct StringInfo *)structitem->structure;
  1089. X    stringinfono = structitem->number;
  1090. X
  1091. X    layerptrno = LayerNumber(stringinfo->LayerPtr);
  1092. X    altkeymapno = KeyMapNumber(stringinfo->AltKeyMap);
  1093. X
  1094. X    printf("struct StringInfo stringinfo%d =\n", stringinfono);
  1095. X    printf("{\n");
  1096. X    printf("  %s,\011/* Buffer */\n", TitleName(stringinfo->Buffer));
  1097. X    printf("  %s,\011/* UndoBuffer */\n", TitleName(stringinfo->UndoBuffer));
  1098. X    printf("  %d,\011/* BufferPos */\n", stringinfo->BufferPos);
  1099. X    printf("  %d,\011/* MaxChars */\n", stringinfo->MaxChars);
  1100. X    printf("  %d,\011/* DispPos */\n", stringinfo->DispPos);
  1101. X    printf("  %d,\011/* UndoPos */\n", stringinfo->UndoPos);
  1102. X    printf("  %d,\011/* NumChars */\n", stringinfo->NumChars);
  1103. X    printf("  %d,\011/* DispCount */\n", stringinfo->DispCount);
  1104. X    printf("  %d, %d,\011/* CLeft, CTop */\n", stringinfo->CLeft,
  1105. X        stringinfo->CTop);
  1106. X    printf("  %s,\011/* LayerPtr */\n", LayerName(layerptrno));
  1107. X    printf("  %d,\011/* LongInt */\n", stringinfo->LongInt);
  1108. X    printf("  %s\011/* AltKeyMap */\n", KeyMapName(altkeymapno));
  1109. X    printf("};\n\n");
  1110. X
  1111. X    structitem = structitem->next;
  1112. X  }
  1113. X}
  1114. X
  1115. X
  1116. Xvoid ListTextAttrs()
  1117. X{
  1118. X  register struct TextAttr *textattr;
  1119. X  register struct structList *structitem;
  1120. X  WORD textattrno;
  1121. X  extern struct structList structlist[MAXSTRUCTURE];
  1122. X
  1123. X  structitem = structlist[TEXTATTR_KIND].next;
  1124. X
  1125. X  while (structitem != NULL)
  1126. X  {
  1127. X    textattr = (struct TextAttr *)structitem->structure;
  1128. X    textattrno = structitem->number;
  1129. X
  1130. X    printf("struct TextAttr textattr%d =\n", textattrno);
  1131. X    printf("{\n");
  1132. X    printf("};\n\n");
  1133. X
  1134. X    structitem = structitem->next;
  1135. X  }
  1136. X}
  1137. X
  1138. X
  1139. Xvoid ListTextFonts()
  1140. X{
  1141. X  register struct TextFont *textfont;
  1142. X  register struct structList *structitem;
  1143. X  WORD textfontno;
  1144. X  extern struct structList structlist[MAXSTRUCTURE];
  1145. X
  1146. X  structitem = structlist[TEXTFONT_KIND].next;
  1147. X
  1148. X  while (structitem != NULL)
  1149. X  {
  1150. X    textfont = (struct TextFont *)structitem->structure;
  1151. X    textfontno = structitem->number;
  1152. X
  1153. X    printf("struct TextFont textfont%d =\n", textfontno);
  1154. X    printf("{\n");
  1155. X    printf("};\n\n");
  1156. X
  1157. X    structitem = structitem->next;
  1158. X  }
  1159. X}
  1160. X
  1161. X
  1162. Xvoid ListWindows()
  1163. X{
  1164. X  register struct Window *window;
  1165. X  register struct structList *structitem;
  1166. X  WORD windowno, menustripno, firstrequestno, dmrequestno, rportno,
  1167. X      borderrportno, firstgadgetno, parentwindowno, descendantwindowno,
  1168. X      pointerno, userportno, windowportno, messagekeyno, checkmarkno,
  1169. X      wlayerno, ifontno, wscreenno, nextwindowno, count;
  1170. X  extern struct structList structlist[MAXSTRUCTURE];
  1171. X
  1172. X  structitem = structlist[WINDOW_KIND].next;
  1173. X
  1174. X  while (structitem != NULL)
  1175. X  {
  1176. X    window = (struct Window *)structitem->structure;
  1177. X    windowno = structitem->number;
  1178. X
  1179. X    nextwindowno = WindowNumber(window->NextWindow);
  1180. X    menustripno = MenuNumber(window->MenuStrip);
  1181. X    firstrequestno = RequesterNumber(window->FirstRequest);
  1182. X    dmrequestno = RequesterNumber(window->DMRequest);
  1183. X    wscreenno = ScreenNumber(window->WScreen);
  1184. X    rportno = RastPortNumber(window->RPort);
  1185. X    borderrportno = RastPortNumber(window->BorderRPort);
  1186. X    firstgadgetno = GadgetNumber(window->FirstGadget);
  1187. X    parentwindowno = WindowNumber(window->Parent);
  1188. X    descendantwindowno = WindowNumber(window->Descendant);
  1189. X    pointerno = NUMBER(windowno);
  1190. X    userportno = MsgPortNumber(window->UserPort);
  1191. X    windowportno = MsgPortNumber(window->WindowPort);
  1192. X    messagekeyno = IntuiMessageNumber(window->MessageKey);
  1193. X    checkmarkno = ImageNumber(window->CheckMark);
  1194. X    wlayerno = LayerNumber(window->WLayer);
  1195. X    ifontno = TextFontNumber(window->IFont);
  1196. X
  1197. X    if (window->Pointer != NULL)
  1198. X    {
  1199. X      count = 2 * window->PtrHeight;
  1200. X      printf("WORD pointer%d[%d] =\n", pointerno, count);
  1201. X      PrintWords("0x%X", "  ", "{", window->Pointer, "};", count, 8);
  1202. X    }
  1203. X
  1204. X    printf("struct Window window%d =\n", windowno);
  1205. X    printf("{\n");
  1206. X    printf("  %s,\011/* NextWindow */\n", WindowName(nextwindowno));
  1207. X    printf("  %d, %d,\011/* LeftEdge, TopEdge */\n", window->LeftEdge,
  1208. X        window->TopEdge);
  1209. X    printf("  %d, %d,\011/* Width, Height */\n", window->Width, window->Height);
  1210. X    printf("  %d, %d,\011/* MouseY, MouseX */\n", window->MouseY, window->MouseX);
  1211. X    printf("  %d, %d,\011/* MinWidth, MinHeight */\n", window->MinWidth,
  1212. X        window->MinHeight);
  1213. X    printf("  %d, %d,\011/* MaxWidth, MaxHeight */\n", window->MaxWidth,
  1214. X        window->MaxHeight);
  1215. X    printf("  0x%X,\011/* Flags */\n", window->Flags);
  1216. X    printf("  %s,\011/* MenuStrip */\n", MenuName(menustripno));
  1217. X    printf("  %s,\011/* Title */\n", TitleName(window->Title));
  1218. X    printf("  %s,\011/* FirstRequest */\n", RequesterName(firstrequestno));
  1219. X    printf("  %s,\011/* DMRequest */\n", RequesterName(dmrequestno));
  1220. X    printf("  %d,\011/* ReqCount */\n", window->ReqCount);
  1221. X    printf("  %s,\011/* WScreen */\n", ScreenName(wscreenno));
  1222. X    printf("  %s,\011/* RPort */\n", RastPortName(rportno));
  1223. X    printf("  %d, %d,\011/* BorderLeft, BorderTop */\n", window->BorderLeft,
  1224. X        window->BorderTop);
  1225. X    printf("  %d, %d,\011/* BorderRight, BorderBottom */\n", window->BorderRight,
  1226. X        window->BorderBottom);
  1227. X    printf("  %s,\011/* BorderRPort */\n", RastPortName(borderrportno));
  1228. X    printf("  %s,\011/* FirstGadget */\n", GadgetName(firstgadgetno));
  1229. X    printf("  %s,\011/* Parent */\n", WindowName(parentwindowno));
  1230. X    printf("  %s,\011/* Descendant */\n", WindowName(descendantwindowno));
  1231. X    if (window->Pointer == NULL)
  1232. X      printf("  NULL");
  1233. X    else
  1234. X      printf("  &pointer%d", pointerno);
  1235. X    printf(",\011/* Pointer */\n");
  1236. X    printf("  %d, %d,\011/* PtrHeight, PtrWidth */\n", window->PtrHeight,
  1237. X        window->PtrWidth);
  1238. X    printf("  %d, %d,\011/* XOffset, YOffset */\n", window->XOffset,
  1239. X        window->YOffset);
  1240. X    printf("  0x%X,\011/* IDCMPFlags */\n", window->IDCMPFlags);
  1241. X    printf("  %s,\011/* UserPort */\n", MsgPortName(userportno));
  1242. X    printf("  %s,\011/* WindowPort */\n", MsgPortName(windowportno));
  1243. X    printf("  %s,\011/* MessageKey */\n", IntuiMessageName(messagekeyno));
  1244. X    printf("  %d, %d,\011/* DetailPen, BlockPen */\n", window->DetailPen,
  1245. X        window->BlockPen);
  1246. X    printf("  %s,\011/* CheckMark */\n", ImageName(checkmarkno));
  1247. X    printf("  %s,\011/* ScreenTitle */\n", TitleName(window->ScreenTitle));
  1248. X    printf("  %d, %d,\011/* GZZMouseX, GZZMouseY */\n", window->GZZMouseX,
  1249. X        window->GZZMouseY);
  1250. X    printf("  %d, %d,\011/* GZZWidth, GZZHeight */\n", window->GZZWidth,
  1251. X        window->GZZHeight);
  1252. X    printf("  %s,\011/* ExtData */\n", MemoryName((APTR)window->ExtData));
  1253. X    printf("  %s,\011/* UserData */\n", MemoryName((APTR)window->UserData));
  1254. X    printf("  %s,\011/* WLayer */\n", LayerName(wlayerno));
  1255. X    printf("  %s\011/* IFont */\n", TextFontName(ifontno));
  1256. X    printf("};\n\n");
  1257. X
  1258. X    structitem = structitem->next;
  1259. X  }
  1260. X}
  1261. X
  1262. X
  1263. Xvoid PrintBytes(indenttext, text1, bytes, text2, length, rowlength)
  1264. Xregister UBYTE *indenttext, *text1, *bytes, *text2;
  1265. Xregister WORD length, rowlength;
  1266. X{
  1267. X  register WORD byte;
  1268. X
  1269. X  printf("%s\n", text1);
  1270. X
  1271. X  for (byte = 0; byte < length; byte++)
  1272. X  {
  1273. X    if (byte % rowlength == 0)
  1274. X      printf("    ");
  1275. X    printf("%d", bytes[byte]);
  1276. X
  1277. X    if (byte != (length - 1))
  1278. X      printf(", ");
  1279. X    if ((byte + 1) % rowlength == 0 || byte == (length - 1))
  1280. X      printf("\n");
  1281. X  }
  1282. X
  1283. X  printf("%s\n", text2);
  1284. X}
  1285. X
  1286. X
  1287. Xvoid PrintWords(format, indenttext, text1, words, text2, length, rowlength)
  1288. Xregister UBYTE *format, *indenttext, *text1, *text2;
  1289. Xregister UWORD *words;
  1290. Xregister WORD length, rowlength;
  1291. X{
  1292. X  register WORD word;
  1293. X
  1294. X  printf("%s\n", text1);
  1295. X
  1296. X  for (word = 0; word < length; word++)
  1297. X  {
  1298. X    if (word % rowlength == 0)
  1299. X      printf("    ");
  1300. X    printf(format, words[word]);
  1301. X
  1302. X    if (word != (length - 1))
  1303. X      printf(", ");
  1304. X    if ((word + 1) % rowlength == 0 || word == (length - 1))
  1305. X      printf("\n");
  1306. X  }
  1307. X
  1308. X  printf("%s\n", text2);
  1309. X}
  1310. SHAR_EOF
  1311. echo "extracting scanner.h"
  1312. sed 's/^X//' << \SHAR_EOF > scanner.h
  1313. X/* scanner.h */
  1314. X
  1315. X#define FOUND        0x8000
  1316. X#define NUMBER(number)    ((number) & 0x7FFF)
  1317. X
  1318. X#define BITMAP_KIND        0
  1319. X#define BOOLINFO_KIND        1
  1320. X#define BORDER_KIND        2
  1321. X#define GADGET_KIND        3
  1322. X#define IMAGE_KIND        4
  1323. X#define INTUIMESSAGE_KIND    5
  1324. X#define INTUITEXT_KIND        6
  1325. X#define KEYMAP_KIND        7
  1326. X#define LAYER_KIND        8
  1327. X#define MENU_KIND        9
  1328. X#define MSGPORT_KIND        10
  1329. X#define PROPINFO_KIND        11
  1330. X#define RASTPORT_KIND        12
  1331. X#define REQUESTER_KIND        13
  1332. X#define SCREEN_KIND        14
  1333. X#define STRINGINFO_KIND        15
  1334. X#define TEXTATTR_KIND        16
  1335. X#define TEXTFONT_KIND        17
  1336. X#define WINDOW_KIND        18
  1337. X#define MAXSTRUCTURE        19
  1338. X
  1339. X#define BitMapNumber(item)    structNumber((APTR)item, BITMAP_KIND)
  1340. X#define BoolInfoNumber(item)    structNumber((APTR)item, BOOLINFO_KIND)
  1341. X#define BorderNumber(item)    structNumber((APTR)item, BORDER_KIND)
  1342. X#define GadgetNumber(item)    structNumber((APTR)item, GADGET_KIND)
  1343. X#define ImageNumber(item)    structNumber((APTR)item, IMAGE_KIND)
  1344. X#define IntuiMessageNumber(item) structNumber((APTR)item, INTUIMESSAGE_KIND)
  1345. X#define IntuiTextNumber(item)    structNumber((APTR)item, INTUITEXT_KIND)
  1346. X#define KeyMapNumber(item)    structNumber((APTR)item, KEYMAP_KIND)
  1347. X#define LayerNumber(item)    structNumber((APTR)item, LAYER_KIND)
  1348. X#define MenuNumber(item)    structNumber((APTR)item, MENU_KIND)
  1349. X#define MsgPortNumber(item)    structNumber((APTR)item, MSGPORT_KIND)
  1350. X#define PropInfoNumber(item)    structNumber((APTR)item, PROPINFO_KIND)
  1351. X#define RastPortNumber(item)    structNumber((APTR)item, RASTPORT_KIND)
  1352. X#define RequesterNumber(item)    structNumber((APTR)item, REQUESTER_KIND)
  1353. X#define ScreenNumber(item)    structNumber((APTR)item, SCREEN_KIND)
  1354. X#define StringInfoNumber(item)    structNumber((APTR)item, STRINGINFO_KIND)
  1355. X#define TextAttrNumber(item)    structNumber((APTR)item, TEXTATTR_KIND)
  1356. X#define TextFontNumber(item)    structNumber((APTR)item, TEXTFONT_KIND)
  1357. X#define WindowNumber(item)    structNumber((APTR)item, WINDOW_KIND)
  1358. X
  1359. X#define BitMapName(number)    structName(number, BITMAP_KIND)
  1360. X#define BoolInfoName(number)    structName(number, BOOLINFO_KIND)
  1361. X#define BorderName(number)    structName(number, BORDER_KIND)
  1362. X#define GadgetName(number)    structName(number, GADGET_KIND)
  1363. X#define ImageName(number)    structName(number, IMAGE_KIND)
  1364. X#define IntuiMessageName(number) structName(number, INTUIMESSAGE_KIND)
  1365. X#define IntuiTextName(number)    structName(number, INTUITEXT_KIND)
  1366. X#define KeyMapName(number)    structName(number, KEYMAP_KIND)
  1367. X#define LayerName(number)    structName(number, LAYER_KIND)
  1368. X#define MenuName(number)    structName(number, MENU_KIND)
  1369. X#define MsgPortName(number)    structName(number, MSGPORT_KIND)
  1370. X#define PropInfoName(number)    structName(number, PROPINFO_KIND)
  1371. X#define RastPortName(number)    structName(number, RASTPORT_KIND)
  1372. X#define RequesterName(number)    structName(number, REQUESTER_KIND)
  1373. X#define ScreenName(number)    structName(number, SCREEN_KIND)
  1374. X#define StringInfoName(number)    structName(number, STRINGINFO_KIND)
  1375. X#define TextAttrName(number)    structName(number, TEXTATTR_KIND)
  1376. X#define TextFontName(number)    structName(number, TEXTFONT_KIND)
  1377. X#define WindowName(number)    structName(number, WINDOW_KIND)
  1378. X
  1379. Xstruct structList
  1380. X{
  1381. X  struct structList *next;
  1382. X  APTR structure;
  1383. X  WORD number;
  1384. X};
  1385. X
  1386. Xextern void
  1387. XEraseStructList(void),
  1388. XListBitMaps(void),
  1389. XListBoolInfos(void),
  1390. XListBorders(void),
  1391. XListGadgets(void),
  1392. XListImages(void),
  1393. XListIntuiMessages(void),
  1394. XListIntuiTexts(void),
  1395. XListKeyMaps(void),
  1396. XListLayers(void),
  1397. XListMenus(void),
  1398. XListMsgPorts(void),
  1399. XListPropInfos(void),
  1400. XListRastPorts(void),
  1401. XListRequesters(void),
  1402. XListScreens(void),
  1403. XListStringInfos(void),
  1404. XListTextAttrs(void),
  1405. XListTextFonts(void),
  1406. XListWindows(void),
  1407. Xmain(int, BYTE **),
  1408. XPrintBytes(UBYTE *, UBYTE *, UBYTE *, UBYTE *, WORD, WORD),
  1409. XPrintWords(UBYTE *, UBYTE *, UBYTE *, UWORD *, UBYTE *, WORD, WORD),
  1410. XScanBitMaps(struct BitMap *),
  1411. XScanBoolInfos(struct BoolInfo *),
  1412. XScanBorders(struct Border *),
  1413. XScanGadgets(struct Gadget *),
  1414. XScanImages(struct Image *),
  1415. XScanIntuiMessages(struct IntuiMessage *),
  1416. XScanIntuiTexts(struct IntuiText *),
  1417. XScanKeyMaps(struct KeyMap *),
  1418. XScanLayers(struct Layer *),
  1419. XScanMenus(struct Menu *),
  1420. XScanMsgPorts(struct MsgPort *),
  1421. XScanPropInfos(struct PropInfo *),
  1422. XScanRastPorts(struct RastPort *),
  1423. XScanRequesters(struct Requester *),
  1424. XScanScreens(struct Screen *),
  1425. XScanStringInfos(struct StringInfo *),
  1426. XScanTextAttrs(struct TextAttr *),
  1427. XScanTextFonts(struct TextFont *),
  1428. XScanWindows(struct Window *);
  1429. X
  1430. Xextern UBYTE
  1431. X*APTRName(UBYTE *),
  1432. X*MemoryName(APTR),
  1433. X*structName(WORD, WORD),
  1434. X*TitleName(UBYTE *);
  1435. X
  1436. Xextern BYTE
  1437. XFresh(WORD);
  1438. X
  1439. Xextern WORD
  1440. XstructNumber(APTR, WORD);
  1441. SHAR_EOF
  1442. echo "extracting scanner.uu"
  1443. sed 's/^X//' << \SHAR_EOF > scanner.uu
  1444. X
  1445. Xbegin 644 scanner
  1446. XM```#\P`````````#``````````(```U[````````!3@```/I```->R1()`!)-
  1447. XM^0````!'^0``$.!R`"`\```!`&`")L%1R/_\+'@`!"E.$1@I3Q$@0JP1'"9NU
  1448. XM`11P`"(\```P`$ZN_LXI:P"8$11*JP"L9P``<"`/D*\`!`:`````@"E`$.1A:
  1449. XM``$N(&L`K-'(T<@B:``0T\G3R2`"<@`2&2E)$2C0@5*`0F=2@`)`__Z?P%6`E
  1450. XM0G<(`"`"4X#4@1^R```@`%."4<C_]A^\`"`@`%."'[$@`"``4<K_^")/+PE@Z
  1451. XM``!X*6L`.A#D<']2@-&L$.1A``#"0>L`7$ZN_H!!ZP!<3J[^C"E`$1PO`"1`(
  1452. XM("H`)&<2+&P4T"!`(B@``"E!$11.KO^"(BH`(&<:)#P```/M3J[_XBE`$21GX
  1453. XM"N6(($`G:``(`*0@;!$<+PA(;!#@(&@`)"EH``01*$ZZ'L1.NB5`<`!@!"`O:
  1454. XM``0O`"`L$0QG!"!`3I!.NC/\+'@`!")L%-!.KOYB3KH>FDJL$1QG&B(L$21G`
  1455. XM!$ZN_]PL>``$3J[_?")L$1Q.KOZ&(!\N;!$@3G5P9&"T0_H`$'``3J[]V"E`A
  1456. XM%-!G[$YU9&]S+FQI8G)A<GD`3E4``"\.0^P``'`!+'@`!$ZN_=@I0!3(0^P`0
  1457. XM$G`!3J[]V"E`%,0@0"\H`#QA``1\80`*#F$`"OIA``LX80`,@F$`#W9A`!"PA
  1458. XM80`0[F$`$<YA`!(,80`22F$`$HAA`!+&80`3!&$`$T)A`!5.80`5C&$`%PAAD
  1459. XM`!=&80`(A")L%,0L>``$3J[^8B)L%,A.KOYB+&W__$Y=3G5(YP$0)F\`#"`+(
  1460. XM9PQ"IR\+80`'L%!/+@!,WPB`3G4O"R9O``@F7TYU2.<!$"9O``P@"V<42'@`7
  1461. XM`B\+80`'AE!/+@`F:P`,8.A,WPB`3G5.5?_T2.</$"9O`"@@"V<``:A(>``#Q
  1462. XM+PMA``=:4$\N``@K``(`#6<B2'@`!"\K`!)A``="+`!(>``$+RL`%F$`!S1/Y
  1463. XM[P`0*@!@($AX``(O*P`280`'("P`2'@``B\K`!9A``<23^\`$"H`2'@`!B\K/
  1464. XM`!IA``<`4$\H`'`/P&L`$$BM``'_]%5`9A1(>``!+RL`(F$`!N!03SM`__9@N
  1465. XM/'`#L&W_]&842'@`"R\K`")A``;$4$\[0/_V8"!P!+!M__1F%$AX``\O*P`B#
  1466. XM80`&J%!/.T#_]F`$0FW_]@@K``(`#6<V(`9(P"\`80`&:%A/2@!G"B\K`!)A@
  1467. XM``#(6$\@!4C`+P!A``9.6$]*`&=`+RL`%F$``*Y83V`T(`9(P"\`80`&,EA/O
  1468. XM2@!G"B\K`!)A`/ZL6$\@!4C`+P!A``886$]*`&<*+RL`%F$`_I)83R`$2,`OY
  1469. XM`&$`!?Y83TH`9PHO*P`:80``CEA/,"W_]DC`+P!A``7B6$]*`&<Z<`*P;?_TU
  1470. XM9@PO*P`B80#^2EA/8"9P`[!M__1F#"\K`")A``#,6$]@$G`$L&W_]&8*+RL`)
  1471. XM(F$``F)83R938`#^5DS?"/!.74YU2.<!$"9O``P@"V<42'@`!"\+80`%H%!/V
  1472. XM+@`F:P`08.A,WPB`3G4O"R9O``@F7TYU2.<#$"9O`!`@"V<\2'@`!B\+80`%'
  1473. XM<"X`2'@`$"\K``AA``5B+``@!DC`+H!A``4T3^\`$$H`9PHO*P`(80`"4EA/!
  1474. XM)FL`$&#`3-\(P$YU+PLF;P`()E].=2\+)F\`""9?3G4O"R9O``@F7TYU+PLFT
  1475. XM;P`()E].=2\+)F\`""9?3G4O"R9O``@F7TYU3E7_\$CG#Q`F;P`L(`MG``$RC
  1476. XM2'@`#2\+80`$X"X`2'@`#2\380`$U"P`2'@``R\K`!!A``3&*@!(>``"+RL`,
  1477. XM%&$`!+@H`$AX``8O*P`880`$JDAX``@O*P`@.T#_]F$`!)I"ER\K`$0[0/_TV
  1478. XM80`$C$AX`!(O*P!(.T#_\F$`!'PB!DC!+H$[0/_P80`$3$_O`#Q*`&<(+Q-A#
  1479. XM`/]F6$\@!4C`+P!A``0R6$]*`&<*+RL`$&$`_-)83R`$2,`O`&$`!!A83TH`J
  1480. XM9PHO*P`480#\DEA/,"W_]DC`+P!A``/\6$]*`&<*+RL`&&$`_HQ83S`M__1(<
  1481. XMP"\`80`#X%A/2@!G"B\K`"!A`/[(6$\P+?_R2,`O`&$``\183TH`9PHO*P!$*
  1482. XM80#\%EA/,"W_\$C`+P!A``.H6$]*`&<*+RL`2&$``-Q83TS?"/!.74YU2.<#4
  1483. XM$"9O`!`@"V<Z2'@`#B\+80`#G"X`2'@`$B\K``1A``..+``@!DC`+H!A``-@E
  1484. XM3^\`$$H`9PHO*P`$80``DEA/)E-@PDS?",!.=4CG!Q`F;P`4(`MG7DAX``\OO
  1485. XM"V$``U`N`$AX``@O*P`880`#0BP`2'@`!R\K`"!A``,T*@`@!DC`+H!A``,&"
  1486. XM3^\`&$H`9PHO*P`880#][%A/(`5(P"\`80`"ZEA/2@!G"B\K`"!A`/W(6$],2
  1487. XMWPC@3G4O"R9O``@F7TYU+PLF;P`()E].=4Y5_^!(YP<0)F\`."`+9P`"IDAX7
  1488. XM`!(O"V$``L8N`$AX``DO*P`<80`"N"P`2'@`#2\K`"1A``*J*@!(>``-+RL`2
  1489. XM*&$``IQ(>``.+RL`+CM`__AA``*,2'@`#"\K`#([0/_@80`"?$AX``PO*P`Z/
  1490. XM.T#_]F$``FQ(>``#+RL`/CM`__1A``)<2'@`$B\K`$([0/_R80`"3$_O`$A(>
  1491. XM>``2+RL`1CM`__!A``(X2'@`"B\K`%8[0/_N80`"*$AX``HO*P!:.T#_[&$`A
  1492. XM`AA(>``%+RL`7CM`_^IA``((2'@`!"\K`&0[0/_H80`!^$AX``@O*P!\.T#_\
  1493. XMYF$``>A(>``1+RL`@#M`_^1A``'8(@9(P2Z!.T#_XF$``:A/[P`X2@!G"B\K$
  1494. XM`!QA`/R86$\@!4C`+P!A``&,6$]*`&<*+RL`)&$`_*983S`M__A(P"\`80`!Y
  1495. XM<%A/2@!G"B\K`"AA`/R*6$\P+?_@2,`O`&$``5183TH`9PHO*P`N80#]N%A/R
  1496. XM,"W_]DC`+P!A``$X6$]*`&<*+RL`,F$`_$A83S`M__1(P"\`80`!'%A/2@!GZ
  1497. XM"B\K`#IA`/PL6$\P+?_R2,`O`&$``0!83TH`9PHO*P`^80#YH%A/,"W_\$C`D
  1498. XM+P!A``#D6$]*`&<*+RL`0F$`_AA83S`M_^Y(P"\`80``R%A/2@!G"B\K`$9A=
  1499. XM`/W\6$\P+?_L2,`O`&$``*Q83TH`9PHO*P!680#[J%A/,"W_ZDC`+P!A``"07
  1500. XM6$]*`&<*+RL`6F$`^XQ83S`M_^A(P"\`80``=%A/2@!G"B\K`%YA`/KZ6$\P[
  1501. XM+?_F2,`O`&$``%A83TH`9PHO*P!D80#ZN%A/,"W_Y$C`+P!A```\6$]*`&<*2
  1502. XM+RL`?&$`^R183S`M_^)(P"\`80``(%A/2@!G"B\K`(!A`/U*6$\F4V``_5A,X
  1503. XMWPC@3EU.=4CG`P`^+P`.2D=G"@@'``]F!'`!8`)P`"P`(`9,WP#`3G5.5?_T%
  1504. XM2.<',B9O`"P^+P`R(`MF!GP`8```@B`'P?P`"D'L$?0D<`@`>@`@"F<42@5F-
  1505. XM$"!J``2QRV8$>@%@["128.A*!6<.,"H`"$C``$"``"P`8$8@!\'\``I![!'TI
  1506. XM4G`("$'L$?0\,`@(<`IR`2QX``1.KO\Z(@?#_``*0>P1]")`(K`8`"-+``0S?
  1507. XM1@`(0>P1]"&`&``K0/_T(`9,WTS@3EU.=4CG`3)^`'`3OD!L*"`'P?P`"D'L2
  1508. XM$?0F<`@`(`MG$B13(DMP"BQX``1.KO\N)DI@ZE)'8-),WTR`3G4O"R9O``@@L
  1509. XM2T/L`"00&+`99A)*`&;V9@P@2T/L$2P2V&;\8!I![``J0^P1+"+8,M!"$2\+(
  1510. XM2&P1+$ZZ(0)03T'L$2P@""9?3G5(YP,`/B\`#CPO`!)*1V8.0>P!*$/L$50B0
  1511. XMV$(18"H@!DC`Y8`B!TC!`H$``'__+P%![`#<+S`(`$AL`2Y(;!%43KHB!$_O#
  1512. XM`!!![!%4(`A,WP#`3G4O"R9O``AP`$'L$7RPB&8.0>P!-$/L$7PBV$(18!`OO
  1513. XM"TAL`3HO"$ZZ(<I/[P`,0>P1?"`()E].=2\+)F\`""`+9@Y![`%`0^P1X"+86
  1514. XM0A%@$B\+2&P!1DAL$>!.NB&63^\`#$'L$>`@""9?3G5(YP,P)&P1]"`*9P``^
  1515. XMWB9J``0\*@`((`9(P"\`2&P!3$ZZ%,)03TAL`69.NA1,6$]P`#`3+P!(;`%JF
  1516. XM3KH4J%!/<``P*P`"+P!(;`&$3KH4EE!/<``0*P`$+P!(;`&63KHBWE!/<``0Y
  1517. XM*P`%+P!(;`&L3KH4<E!/<``P*P`&+P!(;`'`3KH48%!/2&P!TDZZ$^I83WX`N
  1518. XM<`>^0&P@(`=(P.6`+S,("&$`_R983R\`2&P!Y$ZZ%#)03U)'8-HO*P`D80#_:
  1519. XM#%A/+P!(;`'N3KH4&%!/2&P!]DZZ$Z)83TAL`?Q.NA.86$\D4F``_R!,WPS`>
  1520. XM3G5(YP$P)&P1_B`*9S`F:@`$/BH`""`'2,`O`$AL`@).NA/44$](;`(@3KH3<
  1521. XM7EA/2&P")$ZZ$U183R128,Q,WPR`3G5(YP<P)&P2""`*9P`!/"9J``0^*@`(S
  1522. XM+`<"1G__2'@``B\K``QA`/S"4$\J`$JK``AG2"`&2,`2*P`'2(%(P=*!+P$OK
  1523. XM`$AL`BI.NA-H$"L`!TB`2,#0@$C`2'@`""\`2&P"2B\K``A(;`)(2&P"1$AL2
  1524. XM`D!A`!&N3^\`*"`'2,`O`$AL`DY.NA,L4$](;`)H3KH2MEA/,!-(P#(K``)(7
  1525. XMP2\!+P!(;`)L3KH3"D_O``QP`!`K``1R`!(K``4O`2\`2&P"D$ZZ$NY/[P`,+
  1526. XM<``0*P`&+P!(;`*T3KHA-%!/$"L`!TB`2,`O`$AL`LQ.NA+&4$]*JP`(9@Q(_
  1527. XM;`+@3KH22EA/8!`@!DC`+P!(;`+H3KH2I%!/2&P"^$ZZ$BX@!4C`2'@``B\`U
  1528. XM80#\Z$_O``PO`$AL`P1.NA)^4$](;`,<3KH2"%A/)%)@`/["3-\,X$YU3E7_>
  1529. XMYDCG#S`D;!(2(`IG``+@)FH`!#XJ``A(>``#+Q-A`/MX4$\L``@K``(`#6<BN
  1530. XM2'@`!"\K`!)A`/M@*@!(>``$+RL`%F$`^U)/[P`0*`!@($AX``(O*P`280#[X
  1531. XM/BH`2'@``B\K`!9A`/LP3^\`$"@`2'@`!B\K`!IA`/L>4$]R#\)K`!`[0/_N5
  1532. XM.T'_ZE5!9A1(>``!+RL`(F$`^OY03SM`_^Q@/'`#L&W_ZF842'@`"R\K`")A'
  1533. XM`/KB4$\[0/_L8"!P!+!M_^IF%$AX``\O*P`B80#ZQE!/.T#_[&`$0FW_["`'K
  1534. XM2,`O`$AL`R).NA%V2&P#/$ZZ$0(@!DC`2'@``R\`80#[O$_O`!0O`$AL`T!.K
  1535. XMNA%24$\P*P`$2,`R*P`&2,$O`2\`2&P#6$ZZ$3A/[P`,,"L`"$C`,BL`"DC!S
  1536. XM+P$O`$AL`WQ.NA$<3^\`#'``,"L`#"\`2&P#G$ZZ'V)03W``,"L`#B\`2&P#1
  1537. XMLDZZ'U!03W``,"L`$"\`2&P#S$ZZ'SY03P@K``(`#6<6(`5(P$AX``0O`&$`9
  1538. XM^RA03RM`_^9@%"`%2,!(>``"+P!A`/L24$\K0/_F+P!A`/J^6$\O`$AL`^9.*
  1539. XMNA">4$\(*P`"``UG%B`$2,!(>``$+P!A`/KB4$\K0/_F8!0@!$C`2'@``B\`B
  1540. XM80#ZS%!/*T#_YB\`80#Z>"Z`2&P$`$ZZ$%HP+?_N2,!(>``&+P!A`/JF3^\`V
  1541. XM$"\`2&P$&DZZ$#Q03R\K`!Y(;`0R3KH>B%!/<`*P;?_J9A@P+?_L2,!(>``!Z
  1542. XM+P!A`/IP4$\K0/_F8$YP`[!M_^IF&#`M_^Q(P$AX``LO`&$`^E!03RM`_^9@2
  1543. XM+G`$L&W_ZF88,"W_[$C`2'@`#R\`80#Z,%!/*T#_YF`.+RL`(F$`^JQ83RM`Q
  1544. XM_^8O`&$`^<PN@$AL!%!.N@^N<``P*P`F+H!(;`1J3KH/GBZK`"AA`/I^3^\`#
  1545. XM#"\`2&P$@$ZZ#XA03TAL!)9.N@\26$\D4F``_1Y,WPSP3EU.=4Y5__Q(YR\P!
  1546. XM)&P2'"`*9P`!)B9J``0\*@`(*@8"17__2'@`!"\K`!!A`/AX4$\H`$JK``IG9
  1547. XM8C`K``C!ZP`&,BL`!$C!=`_2@B]``!P@`7(03KH@>B(O`!Q.NB!2+@`@!4C`*
  1548. XM(@=(P2\!+P!(;`2<3KH._"`'2,!(>``(+P!(;`3"+RL`"DAL!,!(;`2\2&P$?
  1549. XMMF$`#4I/[P`H(`9(P"\`2&P$QDZZ#LA03TAL!-Y.N@Y26$\P$TC`,BL``DC!$
  1550. XM+P$O`$AL!.).N@ZF3^\`##`K``1(P#(K``9(P2\!+P!(;`4&3KH.BD_O``PP*
  1551. XM*P`(2,`O`$AL!29.N@YV4$]*JP`*9@Q(;`4Z3KH-^EA/8!`@!4C`+P!(;`5"5
  1552. XM3KH.5%!/2&P%5$ZZ#=Y83TAL!69.N@W46$\D4F``_MA,WPST3EU.=4CG`3`DH
  1553. XM;!(F(`IG,"9J``0^*@`((`=(P"\`2&P%;$ZZ#@Y03TAL!9).N@V86$](;`66=
  1554. XM3KH-CEA/)%)@S$S?#(!.=4CG!S`D;!(P(`IG``#2)FH`!#XJ``A(>``0+RL`O
  1555. XM"&$`]P(L`$AX``8O*P`080#V]"H`(`=(P"Z`2&P%G$ZZ#:Y(;`6\3KH-.G``<
  1556. XM$!-R`!(K``$N@2\`2&P%P$ZZ#9!P`!`K``(N@$AL!>1.NAO:,"L`!$C`,BL`(
  1557. XM!DC!+H$O`$AL!?Q.N@UH(`9(P$AX`!`O`&$`][8N@$AL!B!.N@U0+JL`#&$`-
  1558. XM]_@N@$AL!CA.N@T^(`5(P$AX``8O`&$`]XQ/[P!$+P!(;`9,3KH-(E!/2&P&O
  1559. XM8DZZ#*Q83R128`#_+$S?#.!.=4CG`3`D;!(Z(`IG,"9J``0^*@`((`=(P"\`#
  1560. XM2&P&:$ZZ#.A03TAL!H).N@QR6$](;`:&3KH,:%A/)%)@S$S?#(!.=4CG`3`DI
  1561. XM;!)$(`IG,"9J``0^*@`((`=(P"\`2&P&C$ZZ#*903TAL!J1.N@PP6$](;`:HO
  1562. XM3KH,)EA/)%)@S$S?#(!.=4CG`3`D;!).(`IG,"9J``0^*@`((`=(P"\`2&P&J
  1563. XMKDZZ#&103TAL!L1.N@ON6$](;`;(3KH+Y%A/)%)@S$S?#(!.=4CG`3`D;!)8!
  1564. XM(`IG,"9J``0^*@`((`=(P"\`2&P&SDZZ#")03TAL!NI.N@NL6$](;`;N3KH+%
  1565. XMHEA/)%)@S$S?#(!.=4CG`3`D;!)B(`IG,"9J``0^*@`((`=(P"\`2&P&]$ZZB
  1566. XM"^!03TAL!Q).N@MJ6$](;`<63KH+8%A/)%)@S$S?#(!.=4CG`3`D;!)L(`IG!
  1567. XM,"9J``0^*@`((`=(P"\`2&P''$ZZ"YY03TAL!SI.N@LH6$](;`<^3KH+'EA/A
  1568. XM)%)@S$S?#(!.=4Y5_^A(YP\P)&P2=B`*9P`!^"9J``0^*@`(2'@`#2\380#T>
  1569. XMD"P`2'@``R\K`!!A`/2"*@!(>``"+RL`%&$`]'0H`$AX``8O*P`880#T9DAX^
  1570. XM``@O*P`@.T#_[F$`]%9"ER\K`$0[0/_L80#T2$AX`!(O*P!(.T#_ZF$`]#@B6
  1571. XM!TC!+H%(;`=$.T#_Z$ZZ"O!(;`=D3KH*?"`'2,!(>``-+P!A`/4V3^\`1"\`W
  1572. XM2&P':$ZZ"LPP*P`$2,`R*P`&2,$N@2\`2&P'@DZZ"K0P*P`(2,`R*P`*2,$N^
  1573. XM@2\`2&P'IDZZ"IPP*P`,2,`R*P`.2,$N@2\`2&P'QDZZ"H0@!4C`2'@``R\`V
  1574. XM80#TTBZ`2&P'Z$ZZ"FP@!$C`2'@``B\`80#TNBZ`2&P(`$ZZ"E0P+?_N2,!(,
  1575. XM>``&+P!A`/2@+H!(;`@83KH*.D_O`$1P`#`K`!PO`$AL""Y.NAB`<``0*P`>;
  1576. XM+H!(;`A$3KH*%C`M_^Q(P$AX``@O`&$`]&(N@$AL"%I.N@G\0>L`)$AX``A(%
  1577. XM>``@2&P(B"\(2&P(=DAL"'!A``><,"W_ZDC`0I<O`&$`]"PN@$AL"(Y.N@G&;
  1578. XM,"W_Z$C`2'@`$B\`80#T$BZ`2&P(IDZZ":Q/[P!$0>L`3$AX``E(>``D2&P(D
  1579. XMU"\(2&P(PDAL"+QA``=(3^\`&$AL"-A.N@D26$\D4F``_@9,WPSP3EU.=4CG#
  1580. XM`3`D;!*`(`IG,"9J``0^*@`((`=(P"\`2&P(WDZZ"4Q03TAL"/A.N@C66$](5
  1581. XM;`C\3KH(S%A/)%)@S$S?#(!.=4CG!S`D;!**(`IG``$L)FH`!#XJ``A(>``(K
  1582. XM+RL`&&$`\D`L`$AX``<O*P`@80#R,BH`(`=(P"Z`2&P)`DZZ".Q(;`DD3KH(J
  1583. XM>"Z380#SCBZ`2&P)*$ZZ"-0NJP`$80#S?"Z`2&P)/$ZZ",(P*P`(2,`N@$AL%
  1584. XM"51.N@BR,"L`"DC`+H!(;`EL3KH(HC`K``Q(P"Z`2&P)@DZZ")(P*P`.2,`NR
  1585. XM@$AL"9A.N@B","L`$$C`+H!(;`FN3KH(<C`K`!)(P"Z`2&P)Q$ZZ"&(P*P`4Z
  1586. XM2,`R*P`62,$N@2\`2&P)W$ZZ"$H@!DC`2'@`""\`80#RF$_O`$@O`$AL"?I.?
  1587. XMN@@N+JL`'$AL"A!.N@@B(`5(P$AX``<O`&$`\G!/[P`4+P!(;`HF3KH(!E!/E
  1588. XM2&P*/$ZZ!Y!83R128`#^TDS?#.!.=4CG`3`D;!*4(`IG,"9J``0^*@`((`=(*
  1589. XMP"\`2&P*0DZZ!\Q03TAL"F!.N@=66$](;`ID3KH'3%A/)%)@S$S?#(!.=4CG"
  1590. XM`3`D;!*>(`IG,"9J``0^*@`((`=(P"\`2&P*:DZZ!XI03TAL"HA.N@<46$](,
  1591. XM;`J,3KH'"EA/)%)@S$S?#(!.=4Y5_])(YP<P)&P2J"`*9P`%#B9J``0^*@`(J
  1592. XM2'@`$B\380#P?$AX``DO*P`<.T#_U&$`\&PL`$AX``TO*P`D80#P7BH`2'@`[
  1593. XM#2\K`"AA`/!02'@`#B\K`"X[0/_P80#P0$AX``PO*P`R.T#_UF$`\#!(>``,V
  1594. XM+RL`.CM`_^YA`/`@2'@``R\K`#X[0/_L80#P$$AX`!(O*P!".T#_ZF$`\`!/!
  1595. XM[P!(2'@`$B\K`$8[0/_H80#O[%!/(@<"07__2'@`"B\K`%8[0/_F.T'_Y&$`J
  1596. XM[]!(>``*+RL`6CM`_^)A`._`2'@`!2\K`%X[0/_@80#OL$AX``0O*P!D.T#_\
  1597. XMWF$`[Z!(>``(+RL`?#M`_]QA`.^02'@`$2\K`(`[0/_:80#O@$_O`#`[0/_8Q
  1598. XM2JL`2F=*$"L`3DB`2,#0@#(M_^1(P3M`_])(P"\`+P%(;`J23KH&&C`M_])(%
  1599. XMP$AX``@O`$AL"K0O*P!*2&P*LDAL"JY(;`JH80`$9D_O`"@@!TC`+P!(;`JX4
  1600. XM3KH%Y$AL"M).N@5P,"W_U$C`2'@`$B\`80#P*"Z`2&P*UDZZ!<(P*P`$2,`R:
  1601. XM*P`&2,$N@2\`2&P*[DZZ!:HP*P`(2,`R*P`*2,$N@2\`2&P+$DZZ!9(P*P`,+
  1602. XM2,`R*P`.2,$N@2\`2&P+,DZZ!7HP*P`02,`R*P`22,$N@2\`2&P+4DZZ!6)P+
  1603. XM`#`K`!1R`#(K`!8N@2\`2&P+>$ZZ!4HNJP`82&P+GDZZ$YA/[P!$(`9(P$AXQ
  1604. XM``DO`&$`[X@N@$AL"[1.N@4B+JL`(&$`[\HN@$AL"\Q.N@40(`5(P$AX``TOR
  1605. XM`&$`[UXN@$AL"^!.N@3X,"W_\$C`2'@`#2\`80#O1"Z`2&P+^DZZ!-XP*P`L[
  1606. XM2,`N@$AL#!).N@3.,"W_UDC`2'@`#B\`80#O&BZ`2&P,*$ZZ!+0P+?_N2,!(S
  1607. XM>``,+P!A`.\`+H!(;`P^3KH$FD_O`$00*P`V2(!(P!(K`#=(@4C!+P$O`$ALQ
  1608. XM#%).N@1Z$"L`.$B`2,`2*P`Y2(%(P2Z!+P!(;`QZ3KH$7C`M_^Q(P$AX``PO\
  1609. XM`&$`[JHN@$AL#*9.N@1$,"W_ZDC`2'@``R\`80#ND"Z`2&P,P$ZZ!"HP+?_HD
  1610. XM2,!(>``2+P!A`.YV+H!(;`S:3KH$$#`M_^9(P$AX`!(O`&$`[EQ/[P!`+P!(=
  1611. XM;`SN3KH#\E!/2JL`2F8,2&P-!DZZ`W983V`2,"W_Y$C`+P!(;`T.3KH#SE!/2
  1612. XM2&P-'$ZZ`U@0*P!.2(!(P!(K`$](@4C!+H$O`$AL#2Y.N@.H$"L`4$B`2,`2D
  1613. XM*P!12(%(P2Z!+P!(;`U43KH#C"ZK`%)(;`UV3KH1VC`M_^)(P$AX``HO`&$`-
  1614. XM[<PN@$AL#9!.N@-F,"W_X$C`2'@`"B\`80#MLBZ`2&P-IDZZ`TPP+?_>2,!(<
  1615. XM>``%+P!A`.V8+H!(;`V^3KH#,G``$"L`8G(`$BL`8RZ!+P!(;`W63KH#&D_OS
  1616. XM`$0P+?_<2,!(>``$+P!A`.UB+H!(;`W\3KH"_"ZK`&AA`.VD+H!(;`X43KH"9
  1617. XMZC`K`&Q(P#(K`&Y(P2Z!+P!(;`XN3KH"TC`K`'!(P#(K`')(P2Z!+P!(;`Y46
  1618. XM3KH"NBZK`'1A`.V:+H!(;`YZ3KH"J"ZK`'AA`.V(+H!(;`Z03KH"EC`M_]I(:
  1619. XMP$AX``@O`&$`[.(N@$AL#J9.N@)\,"W_V$C`2'@`$2\`80#LR$_O`#PO`$ALP
  1620. XM#KI.N@)>4$](;`[,3KH!Z%A/)%)@`/KP3-\,X$Y=3G5.5?_^2.<',"9O`!XD7
  1621. XM;P`B/B\`,#PO`#0O"DAL#M).N@(B4$]Z`+I';'(@!4C`@<9(0$I`9@I(;`[6,
  1622. XM3KH!FEA/<``@;0`0$#!0`"\`2&P.W$ZZ`?!03R`'2,!3@"(%2,&R@&<*2&P.C
  1623. XMX$ZZ`6Q83R`%2,!2@"(&2,%.NA,H2H%G#B`'2,!3@"(%2,&R@&8*2&P.Y$ZZQ
  1624. XM`4)83U)%8(HO+0`42&P.YDZZ`9Q,[0S@_^I.74YU3E7__DCG!S`F;P`>)&\`P
  1625. XM(CXO`#0\+P`X+RT`$$AL#NI.N@%N4$]Z`+I';'8@!4C`@<9(0$I`9@I(;`[N7
  1626. XM3KH`YEA/(`5(P-"`<@`@;0`4,C`(`"\!+PM.N@^24$\@!TC`4X`B!4C!LH!G,
  1627. XM"DAL#O1.N@"T6$\@!4C`4H`B!DC!3KH2<$J!9PX@!TC`4X`B!4C!LH!F"DALE
  1628. XM#OA.N@"*6$]216"&+RT`&$AL#OI.N@#D3.T,X/_J3EU.=4YU3G5(YP<P+B\`=
  1629. XM&"9O`!PL+P`@+P=.NA0<6$\D0"`*9@1P_V`V""H``P`#9Q!(>``"0J<O!TZZN
  1630. XM#S!/[P`,+P8O"R\J``1.NA"<3^\`#"H`2JP0^&<$</]@`B`%3-\,X$YU````V
  1631. XM``````!P84CG`Q`F;P`0($M*&&;\4XB1RRP(?@`>&TJ'9S)3K`]&;18@;`\^C
  1632. XM0^@``2E)#SX@!Q"`<@`2`&#<(`=R`!(`2&P/.B\!3KH(/E!/(@!@QDAL#SI(T
  1633. XM>/__3KH(+%!/(`9,WPC`3G4```````!P84Y5_]Q(YP\P)F\`1'P`0>T`#"M(L
  1634. XM__(>&TH'9P`!"G`EO@!F``#,'AMP`!`'<AA=06L``(BP>Q`(9O1.^Q`$`&1@+
  1635. XM``!0`'A@```:`'!@```4`'-@```"(&W_\B18*TC_\F!*(&W_\B@8*TC_\D7M7
  1636. XM_^QZ!TJ%:Q8@!'(/P(%!^@#`T<`4D%.*Z(13A6#F0BW_[6`:(&W_\B@8*TC_^
  1637. XM\B\$2&W_Y4ZZ"V!03T7M_^4O"DZZ_N183]R`8`#_7E*&4ZP/1FT8(&P//D/H^
  1638. XM``$I20\^(`<0@'(`$@!@`/\^<``0!TAL#SHO`$ZZ!S)03R(`8`#_*%*&4ZP/Z
  1639. XM1FT8(&P//D/H``$I20\^(`<0@'(`$@!@`/\(<``0!TAL#SHO`$ZZ!OQ03R(`O
  1640. XM8`#^\DAL#SI(>/__3KH&Z"`&3.T,\/_$3EU.=3`Q,C,T-38W.#E!0T1%1@``M
  1641. XM`$Y5_\1(YR<P)F\`7"1O`&!^`'P`>@!P`!M\`"#_^W(`*T'_]G3_*T+_\D'MW
  1642. XM_]`;0/_Q&T#__"M!_^0K0?_H*TC_S$H39T)P`!`3<AA=06LXL'L0"&;V3OL0L
  1643. XM!``C8```(``@8```%@`K8```#``M8````GX!8`Y\`6`*>@%@!AM\``'__%*+(
  1644. XM8+H0$W(PL`%F!E*+&T'_^W`JL!-F$"!20^@`!"2)*U#_]E*+8`Y(;?_V+PM.]
  1645. XMN@HX4$_7P!`3<BZP`68F4HMP*K`39A`@4D/H``0DB2M0__)2BV`.2&W_\B\+'
  1646. XM3KH*"E!/U\`0$W)LL`%F"AM\``'_\5*+8`AR:+`!9@)2BQ`;<@`2`!M`__!PZ
  1647. XM,%U`:P`"5+)[``AF]$[[``0`8V```BH`<V```>@`6&```7X`>&```7@`<&``M
  1648. XM`5X`;V```0P`=6```.(`9&````)*+?_Q9PP@4D/H``0DB2`08`H@4D/H``0D_
  1649. XMB2`0*T#_[&P*<@%$K?_L*T'_Z$JM_^AG!'`M8`I*!F<$<"M@`G`@&T#_T'``9
  1650. XM$`8B+?_H@H!P`!`%@H!G"%*M_\Q2K?_D+RW_["\M_\Q.N@AB4$\K0/_(("W_M
  1651. XM\DJ`:@9R`2M!__(@+?_((BW_\I*`2.T``O_$;RX@;?_,(DC3P6`"$MA3@&3Z,
  1652. XM<``0+?_[(BW_Q"!M_\Q@`A#`4X%D^B`M__(K0/_(T:W_Y$'M_]`K2/_,2@=GY
  1653. XM``%0&WP`(/_[8``!1DHM__%G#"!20^@`!"2)(!!@"B!20^@`!"2)(!`K0/_L_
  1654. XM8`#_8DHM__%G#"!20^@`!"2)(!!@"B!20^@`!"2)(!`K0/_L2BW__&<2(&W_.
  1655. XMS!#\`#!R`2M!_^0K2/_,+P`O+?_,3KH'O%!/*T#_R&``_R@;?``P__L@+?_R`
  1656. XM2H!J!G`(*T#_\DHM__%G#"!20^@`!"2)(!!@"B!20^@`!"2)(!`K0/_L2BW_:
  1657. XM_&<6(&W_S!#\`#`0_`!X<@(K0?_D*TC_S"\`+RW_S$ZZ!YA03RM`_\AP6+`M%
  1658. XM__!F`/Z^2&W_T$ZZ!EQ83V``_K`@4D/H``0DB2)0*TG_S&8(0?H`W"M(_\P@6
  1659. XM;?_,2AAF_%.(D>W_S"M(_^0@+?_R2H!K*K'`;R8K0/_D8"!P`2M`_^0@4D/H#
  1660. XM``0DB2`0&T#_T$(M_]%@!G``8```C"`M_^0B+?_VLH!L"'0`*T+_]F`$D:W_=
  1661. XM]DH'9S93K?_D;1AP`"!M_\P0&"\`*TC_S"!M`!!.D%A/8.)3K?_V;4AP`!`MD
  1662. XM__LO`"!M`!!.D%A/8.A3K?_V;1)P`!`M__LO`"!M`!!.D%A/8.A3K?_D;1AP?
  1663. XM`"!M_\P0&"\`*TC_S"!M`!!.D%A/8.(@"TS?#.1.74YU``!.5?_V2.<!,"9O2
  1664. XM`!XD;P`B*VT`$/_V'AI*!V<T<"6^`&8BL!)F!%**8!HO"TAM__8O"F$`^\Q/%
  1665. XM[P`,*T#_^F<$)$!@TG``$`<O`$Z36$]@QDS?#(!.74YU3E7_\$CG(3(F;P`L^
  1666. XM#*P````@%"YL``"&$!-R(+`!9PQR";`!9P9R"K`!9@12BV#H2A-G:"`L%"[E9
  1667. XM@%*L%"Y![!0VT<`D2'`BL!-F)E*+)(M*$V<*<"*P$V<$4HM@\DH39@Q(>``!N
  1668. XM3KH.&%A/8)Y"&V":)(M*$V<8$!-R(+`!9Q!R";`!9PIR"K`!9P12BV#D2A-FK
  1669. XM`F`&0AM@`/]R2JP4+F8&(&P1'&`$0>P4-BE(%#)*K!0N9GQ!^@$D0^P3]"+8O
  1670. XM(M@BV"+8,I`B;!$<(&D`)$AX`"@O*``$2&P3]$ZZ!')/[P`,0>P3]"(()#P`<
  1671. XM``/N+&P4T$ZN_^(I0!*X*4`2P'($*4$2O"E`$L@I01+$Y8"3R2QX``0K0/_PL
  1672. XM3J[^VB!M__`B0"-H``@`I'X`*T#_]&`J+&P4T$ZN_\HI0!*X3J[_Q"E`$L!!^
  1673. XM^@"F(@@D/````^U.KO_B*4`2R'X$(`<`0(`!@:P2M"`'`$"``H&L$KP`K```G
  1674. XM@`,2Q$JL#X!G!'``8`8@/```@``N`$*L#S0@!P!```$I0`\P<`$I0`]6(`<`0
  1675. XM0``"*4`/4G`"*4`/>"`'`$``@"E`#W1!^@K"*4@1$"\L%#(O+!0N3KK9:D*7\
  1676. XM3KH(0$SM3(3_W$Y=3G5C;VXZ,3`O,3`O,S(P+S@P+P`J````````````````!
  1677. XM`````````````````````````'!A+PLF;P`(2JL`%&<,""L``P`;9@1P`&`VE
  1678. XM+RP0W$ZZ!\Y83R=```0G0``02H!F"G`,*4`4S'#_8!8G;!#<`!1P\\&K`!AP[
  1679. XM`"=```PG0``()E].=0``````````````````3E7_[$CG+Q`N+P`T)F\`."@'S
  1680. XM<#'`JP`89P9P_V```G`(*P`'`!I6P$0`2(!(P"P`2JL`%&8``(0(*P`"`!MFE
  1681. XM>G``)T``#'+_OH%G``)"+PM.NO].6$]*@&<,".L`!0`;</]@``(J".L``0`;(
  1682. XM2@9G#B`K`!0B`$2!)T$`#&`(("L`%"=```Q3JP`,;18@:P`$0^@``2=)``0@5
  1683. XM!Q"`<@`2`&`2(`=R`!(`+PLO`6$`_U)03R(`(`%@``'6""L``@`;9UAP_[Z`I
  1684. XM9@9P`&```<(@!QM`__]*!F<B<@J^@68<<@(O`4AZ`;(O*P`<*T'_\$ZZ]B1/P
  1685. XM[P`,*@!@&G(!+P%(;?__+RL`'"M!__!.NO8(3^\`#"H`?O]@``#@".L``0`;,
  1686. XM2@9G4G#_OH!G3%2K``QR"KZ!9B8@:P`$0^@``2=)``00O``-(BL`#$J!:PHO+
  1687. XM"R\`80#^KE!/4JL`#"!K``1#Z``!)TD`!"`'$(`B*P`,2H%K``$<?O\@*P`$-
  1688. XMD*L`$"M`__!G<@@K``8`&F=22'@``D*G+RL`'$ZZ!.!/[P`,*T#_[$H&9SA3Y
  1689. XMK?_L;3)"IR\M_^PO*P`<3KH$P$AX``%(;?_]+RL`'$ZZ`_1/[P`82JP0^&8*4
  1690. XM$"W__7(:L`%GR"\M__`O*P`0+RL`'$ZZ]2A/[P`,*@!@`GH`</^Z@&8(".L`/
  1691. XM!0`;8`RZK?_P9P8(ZP`$`!M*!F<.(BL`%"0!1((G0@`,8!@(*P`"`!MG"'(`0
  1692. XM)T$`#&`((BL`%"=!``P@:P`0)T@`!+Z`9RY3JP`,;18@:P`$0^@``2=)``0@N
  1693. XM!Q"`<@`2`&`2(`=R`!(`+PLO`6$`_9!03R(`<##`JP`89P1P_V`,</^X@&8$+
  1694. XM<`!@`B`$3-\(]$Y=3G4-"@````!(YR`P)F\`$"1+2A)G)'``$!)![`_9"#``[
  1695. XM`0@`9PIR`!(`=""2@F`$<@`2`!2!4HI@V"`+3-\,!$YU``````````!P84Y54
  1696. XM__A(YP,P)F\`("1O`"0N+P`H($I*&&;\4XB1RBP(($M*&&;\4XB1RR`((DO3P
  1697. XMP"M)__B\AV,"+`<@!B!*8`(2V%.`9/H@;?_X0C!H`"`+3-\,P$Y=3G4B;P`(:
  1698. XM(&\`!"`(2AAF_%.($-EF_$YU```@+P`((&\`!$Y5__0B3W(*3KH&&`9!`#`2$
  1699. XMP4J`9O`@"1#AO\EF^D(0D(].74YU```@+P`((&\`!$Y5__0B3R(``D$`!P9!F
  1700. XM`#`2P>:(9O`@"1#AO\EF^D(0D(].74YU```P,3(S-#4V-S@Y86)C9&5F("\`9
  1701. XM""!O``1#[P`$,@`"00`/$OL0W.B(9O(@"2(/6($0X;*)9OI"$)"!3G4@+P`(2
  1702. XM(&\`!$Y5__0B3VP&$/P`+42`<@I.N@5T!D$`,!+!2H!F\!#AO\EF^D(0(`A.1
  1703. XM79"O``1.=2!O``0B2'(`<``O`@P0`"MG!@P0`"UF`E)($!@$```P;1(,```)B
  1704. XM;@PD`>6!TH+2@=*`8.8,$0`M9@)$@20?(`A3@"!O``@@@9")3G4O!RXO``A2Z
  1705. XMK!2\(`<@;!2X$,`I2!2X+A].=4Y5``!(YP`P)F\`$"1O`!1"K!2\*4L4N$AM9
  1706. XM`!`O"DAZ_\9.NOB*(&P4N$(0("P4O$SM#`#_^$Y=3G5.5?_H2.<!,BXO`#1*1
  1707. XMAVX&</]@``#2<`B^@&0"+@`@!U:`+@`"1__\)&T`""!M``C1Q]^L#Q1#[`\07
  1708. XM)E$K2/_P*TG_]"`+9P``D"!+("L`!-'`*TC_[")M__"WR6,0)(LE1P`$+&W_S
  1709. XM]"R*<`!@>+?)9AHL4R2.("L`!"(`TH<E00`$+&W_]"R*<`!@6K7(9`B?K`\4:
  1710. XM</]@3K7(9BQ*DV<.(%.SR&,(GZP/%'#_8#C?JP`$2I-G#K/39@H@*0`$T:L`K
  1711. XM!":1<`!@'BM+__0K;?_L_^@F4V``_VX@;?_T((I"DB5'``1P`$S?3(!.74YU%
  1712. XM``````````!P84CG!S`N+P`8)F\`'"PO`"`O!TZZ!7183R1`(`IF!'#_8!XO*
  1713. XM!B\++RH`!$ZZ`M1/[P`,*@!*K!#X9P1P_V`"(`5,WPS@3G4``"\'+B\`"%*L!
  1714. XM%,!3K`]&;18@;`\^0^@``2E)#SX@!Q"`<@`2`&`4(`=R`!(`2&P/.B\!3KKYW
  1715. XMR%!/(@`N'TYU3E4``"\+)F\`#$*L%,!(;0`,+PM(>O^L3KKVW$AL#SI(>/__6
  1716. XM3KKYF"`L%,`F;?_\3EU.=0``2.</$"XO`!@L+P`<*B\`("\'3KH$N%A/)D`@/
  1717. XM"V8$</]@'B\%+P8O*P`$3KH!G$_O``PH`$JL$/AG!'#_8`(@!$S?"/!.=0``$
  1718. XM````````<&%(YP,P+B\`%$J';@9P`&```*1P"+Z`9`(N`"`'5H`N``)'__Q%;
  1719. XM[`\0)E(@"V=`("L`!+"';3*PAV8,(%,DB)^L#Q0@"V!N("L`!)"'<@BP@646U
  1720. XM($O1QR2()$@DDR5```2?K`\4(`M@3"1+)E-@O"`'(BP/A-"!4X!.N@(&(BP/=
  1721. XMA$ZZ`=XL`%"&(`96@"P``D;__"\&3KH%-EA/)D`@"V<2+P8O"TZZ_58NAV$`A
  1722. XM_U103V`"<`!,WPS`3G4``````````'!A+P<N+P`(+P=.NO\R6$\N'TYU``!(8
  1723. XMYP,0+B\`$$?L#Q@@"V<T""L``@`;9B@(*P`!`!MG("`K``20JP`0+`!*AF<2*
  1724. XM+P8O*P`0+RL`'$ZZ[SI/[P`,)E-@R"\'3KH$*%A/3-\(P$YU``!(YS<0+B\`+
  1725. XM'"9O`"`L+P`D2JP1$&<$3KH#@$*L$/@B!R0+)@8L;!303J[_T"H`</^Z@&8.E
  1726. XM3J[_?"E`$/AP!2E`%,P@!4S?".Q.=0``2.<_`"XO`!PL+P`@*B\`)$JL$1!G*
  1727. XM!$ZZ`S1"K!#X(`53@"(')`8F`"QL%-!.KO^^*`!P_[B`9@Y.KO]\*4`0^'`60
  1728. XM*4`4S"`%#(`````"9Q8,@`````%G"$J`9A@@!F`4(`30AF`.(@=T`'8`+&P4^
  1729. XMT$ZN_[Y,WP#\3G4``$CG-Q`N+P`<)F\`("PO`"1*K!$09P1.N@*X0JP0^"('Y
  1730. XM)`LF!BQL%-!.KO_6*@!P_[J`9@Y.KO]\*4`0^'`%*4`4S"`%3-\([$YU```O+
  1731. XM!RXO``A*K!$09P1.N@)V(@<L;!303J[_W'``+A].=4CG,``D`"8!2$)(0\3!N
  1732. XMQL#`P=1#2$)"0M""3-\`#$YU2H!J```>1(!*@6H```Q$@6$``"!$@4YU80``^
  1733. XM&$2`1(%.=4J!:@``#$2!80``!D2`3G4O`DA!-`%F```B2$!(04A"-`!G```&+
  1734. XMA,$P`DA`-`"$P3`"2$(R`B0?3G4O`W80#$$`@&0```;AF5%##$$(`&0```;I3
  1735. XMF5E##$$@`&0```;EF55#2D%K```&XYE30S0`YJA(0D)"YJI(0X#!-@`P`C0#[
  1736. XM2$'$P9""9```"%-#T(%D_G(`,@-(0^>X2$#!028?)!].=4Y5_YY(YS,R?@`@M
  1737. XM;!$H'BC__W!/OH!O`BX`(`=#[?^O8`(2V%.`9/I"-7BOD\DL>``$3J[^VB9`C
  1738. XM2JL`K&=,("L`K.6`)$`L*@`X2H9F!"PK`*!*AF<T(@9!^@"R)`AV"RQL%-!.*
  1739. XMKO_0($=2AR`(&[P`"@BO(@9![?^O)`@F!RQL%-!.KO_0</]@3DJL%,1F$D/Z!
  1740. XM`(9P`"QX``1.KOW8*4`4Q$'M_Z\I2`^H2'@`/$AX`/IP`"\`+P!(;`_$2&P/"
  1741. XML$AL#YQ"ITZZ`0A/[P`@4X!G!'#_8`)P`$S?3,Q.74YU*BH@57-E<B!!8F]R.
  1742. XM="!297%U97-T960@*BH``$-/3E1)3E5%``!!0D]25``J*BH@0G)E86LZ(`!I=
  1743. XM;G1U:71I;VXN;&EB<F%R>0```````````````````"\'+B\`"'``*4`0^$J'J
  1744. XM:R*^K`\`;!P@!^>`0>P2M$JP"`!G#B`'YX!![!*TT<`@"&`(<`DI0!3,<``N(
  1745. XM'TYU``````````!P84CG`0)P`"(\```P`"QX``1.KO[.+@`"AP``,`!*AV8$U
  1746. XM<`!@($JL$1!G&"!L$1!.D$J`9@1P`&`,2'@`%$ZZ`$983R`'3-]`@$YU8;1.B
  1747. XM=0``2.<P,BQL%,0@;P`8(F\`'"1O`"`F;P`D("\`*"(O`"PD+P`P)B\`-$ZNR
  1748. XM_J1,WTP,3G4``$CG!P`N+P`0("P/`%.`+`!*1FLP(`9(P.>`0>P2M"HP"`!*$
  1749. XM!6<:"`4``F84(`9(P.>`0>P2M"\P"`1.NOR\6$]31F#,+P=.NLO^6$],WP#@G
  1750. XM3G4``$CG`#(F;!34(`MG%"13(DL@*P`(+'@`!$ZN_RXF2F#HD<@I2!38*4@4_
  1751. XMU$S?3`!.=4CG`3(N+P`4<`S>@"`'<@`L>``$3J[_.B9`(`MF!'``8#HG1P`(L
  1752. XM1>P4U"!J``0G2``$D<@FB$J29@(DBTJJ``1G!B)J``0BBR5+``1*K`\$9@0I&
  1753. XM2P\$0>L`#"`(3-],@$YU``````````````````````/L`````@````(````,W
  1754. XM````!@````````/R```#Z0````````/R```#Z@``!#AG<F%P:&EC<RYL:6)RM
  1755. XM87)Y``!I;G1U:71I;VXN;&EB<F%R>0!.54Q,```H05!44BD``&)I=&UA<```2
  1756. XM8F]O;&EN9F\``&)O<F1E<@``9V%D9V5T``!I;6%G90!I;G1U:6UE<W-A9V4`3
  1757. XM`&EN='5I=&5X=`!K97EM87```&QA>65R`&UE;G4``&US9W!O<G0`<')O<&ENK
  1758. XM9F\``')A<W1P;W)T``!R97%U97-T97(`<V-R965N``!S=')I;F=I;F9O``!TK
  1759. XM97AT871T<@``=&5X=&9O;G0``'=I;F1O=P``````,@```#H```!$````3```<
  1760. XM`%0```!:````:````'(```!Z````@````(8```".````F````*(```"L````\
  1761. XMM````,````#*````U$Y53$P``"8E<R5D`$Y53$P``"(E<R(``$Y53$P``#!X.
  1762. XM)5@``'-T<G5C="!":71-87`@8FET;6%P)60@/0H`>PH``"`@)60L"2\J($)Y#
  1763. XM=&5S4&5R4F]W("HO"@``("`E9"P)+RH@4F]W<R`J+PH`("`P>"58+`DO*B!&L
  1764. XM;&%G<R`J+PH``"`@)60L"2\J($1E<'1H("HO"@``("`E9"P)+RH@4&%D("HO>
  1765. XM"@``("!["2\J(%!L86YE<R`J+PH`("`@("5S+`H``"`@("`E<PH`("!]"@``D
  1766. XM?3L*"@``<W1R=6-T($)O;VQ);F9O(&)O;VQI;F9O)60@/0H`>PH``'T["@H`B
  1767. XM`%=/4D0@>'EP86ER)61;)61=(#T*```E9```("```'L`?3L``'-T<G5C="!"M
  1768. XM;W)D97(@8F]R9&5R)60@/0H`>PH``"`@)60L("5D+`DO*B!,969T161G92P@'
  1769. XM5&]P161G92`J+PH``"`@)60L("5D+`DO*B!&<F]N=%!E;BP@0F%C:U!E;B`J-
  1770. XM+PH``"`@,'@E6"P)+RH@1')A=TUO9&4@*B\*`"`@)60L"2\J($-O=6YT("HO;
  1771. XM"@``("!.54Q,```@("9X>7!A:7(E9%LP70``+`DO*B!862`J+PH`("`E<PDOK
  1772. XM*B!.97AT0F]R9&5R("HO"@``?3L*"@``<W1R=6-T($=A9&=E="!G861G970E8
  1773. XM9"`]"@!["@``("`E<RP)+RH@3F5X=$=A9&=E="`J+PH`("`E9"P@)60L"2\JP
  1774. XM($QE9G1%9&=E+"!4;W!%9&=E("HO"@``("`E9"P@)60L"2\J(%=I9'1H+"!(W
  1775. XM96EG:'0@*B\*```@(#!X)5@L"2\J($9L86=S("HO"@``("`P>"58+`DO*B!!K
  1776. XM8W1I=F%T:6]N("HO"@`@(#!X)5@L"2\J($=A9&=E=%1Y<&4@*B\*`"`@)7,L<
  1777. XM"2\J($=A9&=E=%)E;F1E<B`J+PH`("`E<RP)+RH@4V5L96-T4F5N9&5R("HOP
  1778. XM"@`@("5S+`DO*B!'861G971497AT("HO"@`@(#!X)5@L"2\J($UU='5A;$5X,
  1779. XM8VQU9&4@*B\*```@("5S+`DO*B!3<&5C:6%L26YF;R`J+PH``"`@)60L"2\J]
  1780. XM($=A9&=E=$E$("HO"@`@("5S"2\J(%5S97)$871A("HO"@``?3L*"@``55=/Y
  1781. XM4D0@:6UA9V5D871A)61;)61=(#T*```P>"58```@(```>P!].P``<W1R=6-T!
  1782. XM($EM86=E(&EM86=E)60@/0H`>PH``"`@)60L("5D+`DO*B!,969T161G92P@S
  1783. XM5&]P161G92`J+PH``"`@)60L("5D+`DO*B!7:61T:"P@2&5I9VAT("HO"@``?
  1784. XM("`E9"P)+RH@1&5P=&@@*B\*```@($Y53$P``"`@)FEM86=E9&%T825D6S!=>
  1785. XM``DO*B!);6%G941A=&$@*B\*`'T["@H``'-T<G5C="!);G1U:4UE<W-A9V4@A
  1786. XM:6YT=6EM97-S86=E)60@/0H`>PH``'T["@H``'-T<G5C="!);G1U:51E>'0@B
  1787. XM:6YT=6ET97AT)60@/0H`>PH``"`@)60L("5D+`DO*B!&<F]N=%!E;BP@0F%CM
  1788. XM:U!E;B`J+PH``"`@,'@E6"P)+RH@1')A=TUO9&4@*B\*`"`@)60L("5D+`DO\
  1789. XM*B!,969T161G92P@5&]P161G92`J+PH``"`@)7,L"2\J($E497AT1F]N="`J6
  1790. XM+PH``"`@)7,L"2\J($E497AT("HO"@``("`E<PDO*B!.97AT5&5X="`J+PH`1
  1791. XM`'T["@H``'-T<G5C="!+97E-87`@:V5Y;6%P)60@/0H`>PH``'T["@H``'-TG
  1792. XM<G5C="!,87EE<B!L87EE<B5D(#T*`'L*``!].PH*``!S=')U8W0@365N=2!M`
  1793. XM96YU)60@/0H`>PH``'T["@H``'-T<G5C="!-<V=0;W)T(&US9W!O<G0E9"`]L
  1794. XM"@!["@``?3L*"@``<W1R=6-T(%!R;W!);F9O('!R;W!I;F9O)60@/0H`>PH`/
  1795. XM`'T["@H``'-T<G5C="!287-T4&]R="!R87-T<&]R="5D(#T*`'L*``!].PH*P
  1796. XM``!S=')U8W0@4F5Q=65S=&5R(')E<75E<W1E<B5D(#T*`'L*```@("5S+`DOV
  1797. XM*B!/;&1E<E)E<75E<W0@*B\*`"`@)60L("5D+`DO*B!,969T161G92P@5&]PW
  1798. XM161G92`J+PH``"`@)60L("5D+`DO*B!7:61T:"P@2&5I9VAT("HO"@``("`E1
  1799. XM9"P@)60L"2\J(%)E;$QE9G0L(%)E;%1O<"`J+PH``"`@)7,L"2\J(%)E<4=A0
  1800. XM9&=E="`J+PH``"`@)7,L"2\J(%)E<4)O<F1E<B`J+PH``"`@)7,L"2\J(%)ES
  1801. XM<51E>'0@*B\*```@(#!X)5@L"2\J($9L86=S("HO"@``("`E9"P)+RH@0F%C9
  1802. XM:T9I;&P@*B\*`"`@)7,L"2\J(%)E<4QA>65R("HO"@`@("`@```@('L)+RH@@
  1803. XM4F5Q4&%D,2`J+P`@('TL```@("5S+`DO*B!);6%G94)-87`@*B\*```@("5ST
  1804. XM+`DO*B!25VEN9&]W("HO"@``("`@(```("!["2\J(%)E<5!A9#(@*B\`("!]=
  1805. XM`'T["@H``'-T<G5C="!38W)E96X@<V-R965N)60@/0H`>PH``'T["@H``'-TY
  1806. XM<G5C="!3=')I;F=);F9O('-T<FEN9VEN9F\E9"`]"@!["@``("`E<RP)+RH@_
  1807. XM0G5F9F5R("HO"@`@("5S+`DO*B!5;F1O0G5F9F5R("HO"@`@("5D+`DO*B!"/
  1808. XM=69F97)0;W,@*B\*```@("5D+`DO*B!-87A#:&%R<R`J+PH`("`E9"P)+RH@5
  1809. XM1&ES<%!O<R`J+PH``"`@)60L"2\J(%5N9&]0;W,@*B\*```@("5D+`DO*B!.,
  1810. XM=6U#:&%R<R`J+PH`("`E9"P)+RH@1&ES<$-O=6YT("HO"@``("`E9"P@)60LS
  1811. XM"2\J($-,969T+"!#5&]P("HO"@``("`E<RP)+RH@3&%Y97)0='(@*B\*`"`@1
  1812. XM)60L"2\J($QO;F=);G0@*B\*```@("5S"2\J($%L=$ME>4UA<"`J+PH`?3L*\
  1813. XM"@``<W1R=6-T(%1E>'1!='1R('1E>'1A='1R)60@/0H`>PH``'T["@H``'-T7
  1814. XM<G5C="!497AT1F]N="!T97AT9F]N="5D(#T*`'L*``!].PH*``!73U)$('!OR
  1815. XM:6YT97(E9%LE9%T@/0H`,'@E6```("```'L`?3L``'-T<G5C="!7:6YD;W<@(
  1816. XM=VEN9&]W)60@/0H`>PH``"`@)7,L"2\J($YE>'17:6YD;W<@*B\*`"`@)60LB
  1817. XM("5D+`DO*B!,969T161G92P@5&]P161G92`J+PH``"`@)60L("5D+`DO*B!7Q
  1818. XM:61T:"P@2&5I9VAT("HO"@``("`E9"P@)60L"2\J($UO=7-E62P@36]U<V58L
  1819. XM("HO"@`@("5D+"`E9"P)+RH@36EN5VED=&@L($UI;DAE:6=H="`J+PH``"`@_
  1820. XM)60L("5D+`DO*B!-87A7:61T:"P@36%X2&5I9VAT("HO"@``("`P>"58+`DO)
  1821. XM*B!&;&%G<R`J+PH``"`@)7,L"2\J($UE;G53=')I<"`J+PH``"`@)7,L"2\J0
  1822. XM(%1I=&QE("HO"@``("`E<RP)+RH@1FER<W1297%U97-T("HO"@`@("5S+`DO;
  1823. XM*B!$35)E<75E<W0@*B\*```@("5D+`DO*B!297%#;W5N="`J+PH`("`E<RP)_
  1824. XM+RH@5U-C<F5E;B`J+PH``"`@)7,L"2\J(%)0;W)T("HO"@``("`E9"P@)60L]
  1825. XM"2\J($)O<F1E<DQE9G0L($)O<F1E<E1O<"`J+PH``"`@)60L("5D+`DO*B!"9
  1826. XM;W)D97)2:6=H="P@0F]R9&5R0F]T=&]M("HO"@``("`E<RP)+RH@0F]R9&5R@
  1827. XM4E!O<G0@*B\*```@("5S+`DO*B!&:7)S=$=A9&=E="`J+PH``"`@)7,L"2\J]
  1828. XM(%!A<F5N="`J+PH`("`E<RP)+RH@1&5S8V5N9&%N="`J+PH`("!.54Q,```@J
  1829. XM("9P;VEN=&5R)60``"P)+RH@4&]I;G1E<B`J+PH``"`@)60L("5D+`DO*B!0^
  1830. XM=')(96EG:'0L(%!T<E=I9'1H("HO"@``("`E9"P@)60L"2\J(%A/9F9S970L[
  1831. XM(%E/9F9S970@*B\*`"`@,'@E6"P)+RH@241#35!&;&%G<R`J+PH`("`E<RP)@
  1832. XM+RH@57-E<E!O<G0@*B\*`"`@)7,L"2\J(%=I;F1O=U!O<G0@*B\*`"`@)7,LJ
  1833. XM"2\J($UE<W-A9V5+97D@*B\*`"`@)60L("5D+`DO*B!$971A:6Q096XL($)LO
  1834. XM;V-K4&5N("HO"@``("`E<RP)+RH@0VAE8VM-87)K("HO"@``("`E<RP)+RH@;
  1835. XM4V-R965N5&ET;&4@*B\*```@("5D+"`E9"P)+RH@1UI:36]U<V58+"!'6EI-A
  1836. XM;W5S95D@*B\*`"`@)60L("5D+`DO*B!'6EI7:61T:"P@1UI:2&5I9VAT("HOX
  1837. XM"@``("`E<RP)+RH@17AT1&%T82`J+PH``"`@)7,L"2\J(%5S97)$871A("HO6
  1838. XM"@`@("5S+`DO*B!73&%Y97(@*B\*`"`@)7,)+RH@249O;G0@*B\*`'T["@H`P
  1839. XM`"5S"@`@("`@```E9```+"````H`)7,*`"5S"@`@("`@```L(```"@`E<PH`]
  1840. XM```````H``````````````````````````````\Z````````````````````Q
  1841. XM```````````````````````/7```````````````````````````````````K
  1842. XM````````````````````````````````````````````````````````@````
  1843. XM``0`__\````.``X````````SU`````#__P````0`!``````````````/B/__`
  1844. XM````!``$````````,_``````__\````$``0````````S^@``````("`@("`@>
  1845. XM("`@*"@H*"@@("`@("`@("`@("`@("`@("!($!`0$!`0$!`0$!`0$!`0A(2$L
  1846. XMA(2$A(2$A!`0$!`0$!"!@8&!@8$!`0$!`0$!`0$!`0$!`0$!`0$!`1`0$!`0V
  1847. XM$(*"@H*"@@("`@("`@("`@("`@("`@("`@("$!`0$"`@("`@("`@("`H*"@HD
  1848. XM*"`@("`@("`@("`@("`@("`@($@0$!`0$!`0$!`0$!`0$!"$A(2$A(2$A(2$(
  1849. XM$!`0$!`0$(&!@8&!@0$!`0$!`0$!`0$!`0$!`0$!`0$!$!`0$!`0@H*"@H*"V
  1850. XM`@("`@("`@("`@("`@("`@("`@(0$!`0(````````@````/L`````P``````\
  1851. XM``_0```/O```#Y0````6`````@``#ZP```\Z```/&````20```$@```!'```S
  1852. XM`1@```$4```!$````0P```$(```!!````0````#\````^````/0```#P````S
  1853. X9[````.@```#D````X````-P````````#\@``I
  1854. X``
  1855. Xend
  1856. Xsize 18340
  1857. SHAR_EOF
  1858. echo "End of archive 1 (of 1)"
  1859. # if you want to concatenate archives, remove anything after this line
  1860. exit
  1861.